Commit 7bb7952

mo khan <mo@mokhan.ca>
2013-12-09 20:05:53
add event aggregator specs.
1 parent 28b5936
Changed files (3)
lib/presentation/event_aggregator.rb
@@ -5,11 +5,8 @@ class EventAggregator
 
   def publish(event, *args)
     subscribers = subscribers_for(event)
-    puts "all #{@subscribers}"
-    puts "found #{subscribers}"
     subscribers.each do |subscriber|
-      puts "publishing #{event} to #{subscriber}"
-      subscriber.public_send(event, args)
+      subscriber.public_send(event, *args)
     end
   end
 
spec/presentation/event_aggregator_spec.rb
@@ -0,0 +1,25 @@
+require "spec_helper"
+
+describe EventAggregator do
+  let(:sut) { EventAggregator.new }
+
+  context "when publishing an event" do
+    let(:hello_subscriber) { double("hello_subscriber", hello: true) }
+    let(:goodbye_subscriber) { double("goodbye_subscriber", hello: false) }
+
+    before :each do
+      sut.subscribe(:hello, hello_subscriber)
+      sut.subscribe(:goodbye, goodbye_subscriber)
+
+      sut.publish(:hello, 'mo', 'kha')
+    end
+
+    it "notifies all subscribers of that event" do
+      hello_subscriber.should have_received(:hello).with('mo', 'kha')
+    end
+
+    it "does not notify subscribers of other events" do
+      goodbye_subscriber.should_not have_received(:hello)
+    end
+  end
+end
spec/spec_helper.rb
@@ -0,0 +1,2 @@
+require "rspec"
+require 'presentation/event_aggregator'