Sha256: be05bd7fca101b0a65e27b1496fdc691ab45f77e8bf3d887b28824835ef89e4f

Contents?: true

Size: 1.89 KB

Versions: 8

Compression:

Stored size: 1.89 KB

Contents

require 'spec_helper'

class ObservableTest
    include Arachni::Support::Mixins::Observable

    public :clear_observers

    advertise :my_event, :my_other_event

    def notify( event, *args )
        send "notify_#{event}", *args
    end

end

describe Arachni::Support::Mixins::Observable do

    subject{ ObservableTest.new }

    describe '#<event>' do
        it 'adds an observer' do
            called = false
            subject.my_event { called = true }
            subject.notify :my_event

            called.should be_true
        end

        it 'returns self' do
            subject.my_event { }.should == subject
        end

        context 'when no block is given' do
            it 'raises ArgumentError' do
                expect { subject.my_event }.to raise_error ArgumentError
            end
        end

        context 'when the observer expects arguments' do
            it 'forwards them' do
                received_args = nil
                sent_args     = [ 1, 2, 3]

                subject.my_other_event do |one, two, three|
                    received_args = [one, two, three]
                end
                subject.notify :my_other_event, sent_args

                received_args.should == sent_args
            end
        end

        describe 'when the event does not exist' do
            it "raises #{NoMethodError}" do
                expect { subject.blah_event }.to raise_error NoMethodError
            end
        end
    end

    describe '#call_<event>' do
        it 'returns nil' do
            subject.my_event { }
            subject.notify( :my_event ).should be_nil
        end
    end

    describe '#clear_observers' do
        it 'removes all observers' do
            called = false

            subject.my_event { called = true }
            subject.clear_observers

            subject.notify :my_event

            called.should be_false

        end
    end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
arachni-1.1 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0.6 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0.5 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0.4 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0.3 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0.2 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0.1 spec/arachni/support/mixins/observable_spec.rb
arachni-1.0 spec/arachni/support/mixins/observable_spec.rb