spec/flirt/flirt_spec.rb in flirt-0.0.1 vs spec/flirt/flirt_spec.rb in flirt-0.0.2

- old
+ new

@@ -1,33 +1,99 @@ require 'spec_helper' -require 'flirt/flirt_test_classes' +#require 'flirt/flirt_test_classes' describe Flirt do describe "with a single :pancake_fried subscriber" do let(:response) { { topping: "cream" } } let(:event) { :pancake_fried } let(:wrong_event) { :spud_baked } - let!(:listener) { TestListener.new(event) } + let(:callback) { :respond } + let!(:listener) { Object.new } + before(:each) do + Flirt.listen listener, event, with: callback + end + it "listens to the correct broadcast event" do + expect(listener).to receive(callback).with(response) Flirt.broadcast event, response - expect(listener.responded).to eq(response) end it "listens to the correct publish event" do + expect(listener).to receive(callback).with(response) Flirt.publish event, response - expect(listener.responded).to eq(response) end it "doesn't listen to the wrong broadcast event" do + expect(listener).not_to receive(callback) Flirt.broadcast wrong_event, response - expect(listener.responded).to be_nil end it "doesn't listen to the wrong publish event" do + expect(listener).not_to receive(callback) Flirt.broadcast wrong_event, response - expect(listener.responded).to be_nil + end + + describe "when disabled" do + before(:each) { Flirt.disable } + after(:each) { Flirt.enable } + + it "doesn't broadcast" do + expect(listener).not_to receive(callback) + Flirt.broadcast event, response + end + + it "doesn't publish" do + expect(listener).not_to receive(callback) + Flirt.publish event, response + end + end + + describe "when cleared" do + + let(:callback2) { :respond2 } + + before(:each) do + Flirt.listen listener, event, with: callback2 + Flirt.clear + end + + it "forgets listeners" do + expect(listener).not_to receive(callback) + expect(listener).not_to receive(callback2) + Flirt.publish event, response + end + + end + + describe "when unlistened" do + + let(:callback2) { :respond2 } + + before(:each) do + Flirt.listen listener, event, with: callback2 + Flirt.unlisten listener, event, with: callback + end + + it "forgets the listener" do + expect(listener).not_to receive(callback) + expect(listener).to receive(callback2).with(response) + Flirt.broadcast event, response + end + + end + + describe "when unsubscribed" do + before(:each) do + Flirt.unsubscribe listener, event, with: callback + end + + it "forgets the listener" do + expect(listener).not_to receive(callback).with(response) + Flirt.publish event, response + end + end end end \ No newline at end of file