Sha256: 5079014a49fdc1003b3309798ed3cc34fc469269d9e709fa591a02ccb8159626

Contents?: true

Size: 1.37 KB

Versions: 46

Compression:

Stored size: 1.37 KB

Contents

require File.dirname(__FILE__) + "/../spec_helper"

describe MethodObserver do
  
  class TestObserver < MethodObserver    
    def before_observed_method(*args, &block); end
    def after_observed_method(*args); end
  end

  class TestObject
    def observed_method
      :success
    end
  end

  before :each do
    @object = TestObject.new
    @object.stub!(:before_result=).and_return(nil)
    @object.stub!(:after_result=).and_return(:success)
    @observer = TestObserver.new
    @observer.observe(@object)
  end
  
  it "should permit only one object to be observed" do
    lambda { @observer.observe(@object)}.should raise_error(MethodObserver::ObserverCannotObserveTwiceError)
  end
  
  it "should have a target equal to the observed object" do
    @observer.should respond_to(:target)
    @observer.target.should == @object
  end
  
  it "should invoke the before_ method before the object's method is invoked" do
    @observer.should_receive(:before_observed_method) do
      @observer.result.should be_nil
    end
    @object.observed_method.should == :success
    @observer.result.should == :success
  end
  
  it "should invoke the after_ method after the object's method is invoked" do
    @observer.should_receive(:after_observed_method) do
      @observer.result.should == :success
    end
    @object.observed_method.should == :success
    @observer.result.should == :success
  end
end

Version data entries

46 entries across 46 versions & 5 rubygems

Version Path
radiant-1.1.4 spec/lib/method_observer_spec.rb
radiant-1.1.3 spec/lib/method_observer_spec.rb
radiant-1.1.2 spec/lib/method_observer_spec.rb
radiant-1.1.1 spec/lib/method_observer_spec.rb
radiant-1.1.0 spec/lib/method_observer_spec.rb
radiant-1.1.0.rc1 spec/lib/method_observer_spec.rb
radiant-1.1.0.beta spec/lib/method_observer_spec.rb
radiant-1.0.1 spec/lib/method_observer_spec.rb
radiant-1.1.0.alpha spec/lib/method_observer_spec.rb
radiant-1.0.0 spec/lib/method_observer_spec.rb
radiant-1.0.0.rc5 spec/lib/method_observer_spec.rb
radiant-1.0.0.rc4 spec/lib/method_observer_spec.rb
radiant-1.0.0.rc3 spec/lib/method_observer_spec.rb
kajam-1.0.3.rc2 spec/lib/method_observer_spec.rb
radiant-1.0.0.rc2 spec/lib/method_observer_spec.rb
radiant-1.0.0.rc1 spec/lib/method_observer_spec.rb
radiant-rails3-0.1 spec/lib/method_observer_spec.rb
radiantcms-couchrest_model-0.2.4 spec/lib/method_observer_spec.rb
radiantcms-couchrest_model-0.2.2 spec/lib/method_observer_spec.rb
radiantcms-couchrest_model-0.2.1 spec/lib/method_observer_spec.rb