spec/adhearsion/events_spec.rb in adhearsion-2.6.4 vs spec/adhearsion/events_spec.rb in adhearsion-3.0.0.beta1
- old
+ new
@@ -10,71 +10,56 @@
before do
Events.refresh!
end
- it "should have a GirlFriday::Queue to handle events" do
- expect(Events.queue).to be_a GirlFriday::WorkQueue
- end
-
it "should allow adding events to the queue and handle them appropriately" do
- t = nil
- o = nil
+ e = nil
latch = CountDownLatch.new 1
- expect(Events.instance).to receive(:handle_message) do |message|
- t = message.type
- o = message.object
+ Events.register_handler :event do |event|
+ logger.info "Received an event!"
+ e = event
latch.countdown!
end
Events.trigger :event, :foo
expect(latch.wait(2)).to be_truthy
- expect(t).to eq(:event)
- expect(o).to eq(:foo)
+ expect(e).to eq(:foo)
end
it "should allow executing events immediately" do
- t = nil
- o = nil
+ e = nil
- expect(Events.instance).to receive(:handle_message) do |message|
+ Events.register_handler :event do |event|
sleep 0.25
- t = message.type
- o = message.object
+ e = event
end
Events.trigger_immediately :event, :foo
- expect(t).to eq(:event)
- expect(o).to eq(:foo)
+ expect(e).to eq(:foo)
end
- it "should handle events using registered guarded handlers" do
- result = nil
+ it "should handle exceptions in event processing by raising the exception as an event" do
+ e = nil
+ latch = CountDownLatch.new 1
- Events.register_handler :event, EventClass do |event|
- result = :foo
+ Events.register_handler :exception do |event|
+ e = event
+ latch.countdown!
end
- Events.trigger_immediately :event, EventClass.new
-
- expect(result).to eq(:foo)
-
- Events.clear_handlers :event, EventClass
- end
-
- it "should handle exceptions in event processing by raising the exception as an event" do
- expect(Events.instance).to receive(:trigger).with(:exception, kind_of(ExceptionClass)).once
-
Events.register_handler :event, EventClass do |event|
raise ExceptionClass
end
Events.trigger_immediately :event, EventClass.new
- Events.clear_handlers :event, EventClass
+
+ expect(latch.wait(2)).to be_truthy
+ expect(e).to be_a(ExceptionClass)
end
it "should implicitly pass on all handlers" do
result = nil
@@ -87,35 +72,24 @@
end
Events.trigger_immediately :event, EventClass.new
expect(result).to eq(:bar)
-
- Events.clear_handlers :event, EventClass
end
- it "should respond_to? any methods corresponding to classes for which handlers are defined" do
- Events.register_handler :event_type_1 do |event|
- end
-
- expect(Events).to respond_to(:event_type_1)
- expect(Events).not_to respond_to(:event_type_2)
- end
-
describe '#draw' do
it "should allow registering handlers by type" do
result = nil
Events.draw do
event do
+ logger.info "Got an event!"
result = :foo
end
end
Events.trigger_immediately :event
expect(result).to eq(:foo)
-
- Events.clear_handlers :event
end
end
end
end