1 require File.dirname(__FILE__) + '/../test_helper'
3 class MethodObserverTest < Test::Unit::TestCase
6 cattr_accessor :captures
7 @@captures = [:invoked, :before_called, :after_called, :before_result, :after_result]
9 attr_accessor *captures
17 class TestObserver < MethodObserver
18 def before_test(args, &block)
19 target.before_called = true
20 target.before_result = result
24 target.after_called = true
25 target.after_result = result
30 @object = TestObject.new
31 @observer = TestObserver.new
32 @observer.observe(@object)
36 TestObject.captures.each do |c|
37 assert_nil @object.send(c), "capture: #{c}"
42 TestObject.captures.reject { |c| c == :before_result }.each do |c|
43 assert @object.send(c), "capture: #{c}"
45 assert_nil @object.before_result
48 def test_observe__double
49 e = assert_raises(MethodObserver::ObserverCannotObserveTwiceError) { @observer.observe(@object) }
50 assert_equal 'observer cannot observe twice', e.message