Sha256: 56a7235afbe75d3b247cb51dc2aeeb17c28f97bb3a9846ed7973a7ad00aa6942

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

require File.dirname(__FILE__) + '/../test_helper'

class MethodObserverTest < Test::Unit::TestCase
  
  class TestObject
    cattr_accessor :captures
    @@captures = [:invoked, :before_called, :after_called, :before_result, :after_result]
    
    attr_accessor *captures
    
    def test(result)
      @invoked = true
      result
    end
  end
  
  class TestObserver < MethodObserver    
    def before_test(args, &block)
      target.before_called = true
      target.before_result = result
    end
    
    def after_test(args)
      target.after_called = true
      target.after_result = result
    end
  end
  
  def setup
    @object = TestObject.new
    @observer = TestObserver.new
    @observer.observe(@object)
  end
  
  def test_observe
    TestObject.captures.each do |c|
      assert_nil @object.send(c), "capture: #{c}"
    end
    
    @object.test(:result)
    
    TestObject.captures.reject { |c| c == :before_result }.each do |c|
      assert @object.send(c), "capture: #{c}"
    end
    assert_nil @object.before_result
  end
  
  def test_observe__double
    e = assert_raises(MethodObserver::ObserverCannotObserveTwiceError) { @observer.observe(@object) }
    assert_equal 'observer cannot observe twice', e.message
  end
  
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
radiant-0.6.0 test/unit/method_observer_test.rb
radiant-0.6.1 test/unit/method_observer_test.rb
radiant-0.6.2 test/unit/method_observer_test.rb
radiant-0.6.3 test/unit/method_observer_test.rb
radiant-0.6.4 test/unit/method_observer_test.rb