more diagnostics
[god.git] / test / test_trigger.rb
blob26fd1a50327ded34ca8343ffb9945477df496343
1 require File.dirname(__FILE__) + '/helper'
3 class TestTrigger < Test::Unit::TestCase
4   def setup
5     Trigger.reset
6   end
7   
8   # base case
9   
10   def test_should_have_empty_triggers
11     assert_equal({}, Trigger.triggers)
12   end
13   
14   # register
15   
16   def test_register_should_add_condition_to_triggers
17     c = Condition.new
18     c.watch = stub(:name => 'foo')
19     Trigger.register(c)
20     
21     assert_equal({'foo' => [c]}, Trigger.triggers)
22   end
23   
24   def test_register_should_add_condition_to_triggers_twice
25     watch = stub(:name => 'foo')
26     c = Condition.new
27     c.watch = watch
28     Trigger.register(c)
29     
30     c2 = Condition.new
31     c2.watch = watch
32     Trigger.register(c2)
33     
34     assert_equal({'foo' => [c, c2]}, Trigger.triggers)
35   end
36   
37   # deregister
38   
39   def test_deregister_should_remove_condition_from_triggers
40     c = Condition.new
41     c.watch = stub(:name => 'foo')
42     Trigger.register(c)
43     Trigger.deregister(c)
44     
45     assert_equal({}, Trigger.triggers)
46   end
47   
48   # broadcast
49   
50   def test_broadcast_should_call_process_on_each_condition
51     c = Condition.new
52     c.watch = stub(:name => 'foo')
53     Trigger.register(c)
54     
55     c.expects(:process).with(:state_change, [:up, :start])
56     
57     Trigger.broadcast(c.watch, :state_change, [:up, :start])
58   end
59 end