Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / radiant_specs / test / unit / .svn / text-base / method_observer_test.rb.svn-base
blobe0bf3baf439b54830c9e780147ebf22fdbfc541e
1 require File.dirname(__FILE__) + '/../test_helper'
3 class MethodObserverTest < Test::Unit::TestCase
4   
5   class TestObject
6     cattr_accessor :captures
7     @@captures = [:invoked, :before_called, :after_called, :before_result, :after_result]
8     
9     attr_accessor *captures
10     
11     def test(result)
12       @invoked = true
13       result
14     end
15   end
16   
17   class TestObserver < MethodObserver    
18     def before_test(args, &block)
19       target.before_called = true
20       target.before_result = result
21     end
22     
23     def after_test(args)
24       target.after_called = true
25       target.after_result = result
26     end
27   end
28   
29   def setup
30     @object = TestObject.new
31     @observer = TestObserver.new
32     @observer.observe(@object)
33   end
34   
35   def test_observe
36     TestObject.captures.each do |c|
37       assert_nil @object.send(c), "capture: #{c}"
38     end
39     
40     @object.test(:result)
41     
42     TestObject.captures.reject { |c| c == :before_result }.each do |c|
43       assert @object.send(c), "capture: #{c}"
44     end
45     assert_nil @object.before_result
46   end
47   
48   def test_observe__double
49     e = assert_raises(MethodObserver::ObserverCannotObserveTwiceError) { @observer.observe(@object) }
50     assert_equal 'observer cannot observe twice', e.message
51   end
52   
53 end