Sha256: bcaa91b21c908c08422589f1a79aac272511372960b584734ef84e196f5fe454

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'
require 'flirt/flirt_test_classes'

describe Flirt::Listener do
    before(:each) do
        Flirt.enable
    end

    describe "when included in an instance" do
        let(:event)               { :grabbed_coin }
        let(:callback_name)       { :increase_score }
        let(:event_data)          { { value: 100 } }
        let(:instance_subscriber) { TestInstanceSubscriber.new event, callback_name }
        let(:instance_listener)   { TestInstanceListener.new event, callback_name }

        it "subscribes to an event" do
            expect(instance_subscriber).to receive(callback_name).with(event_data)
            Flirt.broadcast event, event_data
        end

        it "listens to an event" do
            expect(instance_listener).to receive(callback_name).with(event_data)
            Flirt.broadcast event, event_data
        end
    end

    describe "when included in a class" do
        let(:event)               { :event_name }
        let(:callback_name)       { :callback_name }
        let(:event_data)          { { value: 100 } }
        let(:class_subscriber)    { TestClassSubscriber }
        let(:class_listener)      { TestClassListener }

        # Because rspec has to clear the Flirt callbacks for each test,
        # we need to require the test classes after rspec init.

        it "subscribes to an event" do
            require 'flirt/test_class_subscriber'
            expect(class_subscriber).to receive(callback_name).with(event_data)
            Flirt.broadcast event, event_data
        end

        it "listens to an event" do
            require 'flirt/test_class_listener'
            expect(class_listener).to receive(callback_name).with(event_data)
            Flirt.broadcast event, event_data
        end
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flirt-0.0.1 spec/flirt/flirt_listener_spec.rb