tighten up Hub and add comments
[god.git] / test / test_task.rb
blobf0cd8d3db646fafd5d0bd98fdaa523b6512ae2ac
1 require File.dirname(__FILE__) + '/helper'
3 class TestTask < Test::Unit::TestCase
4   def setup
5     God.internal_init
6     @task = Task.new
7     @task.name = 'foo'
8     @task.valid_states = [:foo, :bar]
9     @task.initial_state = :foo
10     @task.interval = 5
11     @task.prepare
12   end
13   
14   # valid?
15   
16   def test_valid_should_return_false_if_no_name
17     @task.name = nil
18     no_stdout do
19       assert !@task.valid?
20     end
21   end
22   
23   def test_valid_should_return_false_if_no_valid_states
24     @task.valid_states = nil
25     no_stdout do
26       assert !@task.valid?
27     end
28   end
29   
30   def test_valid_should_return_false_if_no_initial_state
31     @task.initial_state = nil
32     no_stdout do
33       assert !@task.valid?
34     end
35   end
36   
37   # transition
38   
39   def test_transition_should_be_always_if_no_block_was_given
40     @task.transition(:foo, :bar)
41     
42     assert 1, @task.metrics.size
43     assert Conditions::Always, @task.metrics.keys.first.class
44   end
45   
46   # method_missing
47   
48   def test_method_missing_should_create_accessor_for_states
49     assert_nothing_raised do
50       @task.foo = 'testing'
51     end
52   end
53   
54   def test_method_missing_should_raise_for_non_states
55     assert_raise NoMethodError do
56       @task.baz = 5
57     end
58   end
59   
60   def test_method_missing_should_raise_for_non_setters
61     assert_raise NoMethodError do
62       @task.baz
63     end
64   end
65   
66   # action
67   
68   def test_action_should_send_string_commands_to_system
69     @task.foo = 'foo'
70     @task.expects(:system).with('foo')
71     no_stdout { @task.action(:foo, nil) }
72   end
73   
74   def test_action_should_cal_lambda_commands
75     @task.foo = lambda { }
76     @task.foo.expects(:call)
77     no_stdout { @task.action(:foo, nil) }
78   end
79   
80   def test_action_should_raise_not_implemented_on_non_string_or_lambda_action
81     assert_raise NotImplementedError do
82       @task.foo = 7
83       @task.action(:foo, nil)
84     end
85   end
86 end