spec/lib/dispatch-rider/subscriber_spec.rb in dispatch-rider-1.5.3 vs spec/lib/dispatch-rider/subscriber_spec.rb in dispatch-rider-1.6.0

- old
+ new

@@ -1,43 +1,50 @@ require "spec_helper" describe DispatchRider::Subscriber do before do - DispatchRider::Handlers::Base.stub(:subclasses){ Set.new } + allow(DispatchRider::Handlers::Base).to receive(:subclasses) { Set.new } - stub_const("FooBar", Class.new(DispatchRider::Handlers::Base) { - def process(options) + konst = Class.new(DispatchRider::Handlers::Base) do + def process(_options) throw :process_was_called end - }) + end + stub_const("FooBar", konst) end describe "#initialize" do it "should assign a new queue service registrar" do - subject.queue_service_registrar.store.should be_empty + expect(subject.queue_service_registrar.store).to be_empty end end describe "#register_queue" do it "should register a queue service with the queue service registrar" do subject.register_queue(:simple) - subject.queue_service_registrar.fetch(:simple).should be_empty + expect(subject.queue_service_registrar.fetch(:simple)).to be_empty end end describe "#register_handler" do it "should register a handler" do subject.register_handler(:foo_bar) - expect { subject.dispatcher.dispatch(DispatchRider::Message.new(:subject => :foo_bar, :body => {'foo' => 'bar'})) }.to throw_symbol(:process_was_called) + expect { + message = DispatchRider::Message.new(subject: :foo_bar, body: { 'foo' => 'bar' }) + subject.dispatcher.dispatch(message) + }.to throw_symbol(:process_was_called) end end describe "#register_handlers" do it "should register all the handlers" do subject.register_handlers(:foo_bar) - expect { subject.dispatcher.dispatch(DispatchRider::Message.new(:subject => :foo_bar, :body => {'foo' => 'bar'})) }.to throw_symbol(:process_was_called) + expect { + message = DispatchRider::Message.new(subject: :foo_bar, body: { 'foo' => 'bar' }) + subject.dispatcher.dispatch(message) + }.to throw_symbol(:process_was_called) end end describe "#setup_demultiplexer" do context "when a queue is registered" do @@ -46,12 +53,12 @@ subject.register_handler(:foo_bar) end it "should assign a demultiplexer" do subject.setup_demultiplexer(:simple) - subject.demultiplexer.queue.should be_empty - subject.demultiplexer.dispatcher.fetch(:foo_bar).should eq(FooBar) + expect(subject.demultiplexer.queue).to be_empty + expect(subject.demultiplexer.dispatcher.fetch(:foo_bar)).to eq(FooBar) end end end describe "#process" do @@ -61,76 +68,85 @@ subject.setup_demultiplexer(:simple) end describe "processing" do before do - subject.queue_service_registrar.fetch(:simple).push(DispatchRider::Message.new(subject: :foo_bar, body: {'baz' => 'blah'})) + message = DispatchRider::Message.new(subject: :foo_bar, body: { 'baz' => 'blah' }) + subject.queue_service_registrar.fetch(:simple).push(message) end it "should process the queue" do expect { subject.process }.to throw_symbol(:process_was_called) end end # kills travis sometimes so leaving it here as tested documentation describe "process termination", if: false do - before { subject.demultiplexer.stub(:stop){ throw :got_stopped } } + before { allow(subject.demultiplexer).to receive(:stop) { throw :got_stopped } } context "when process quits" do before do - stub_const("Quiter", Class.new(DispatchRider::Handlers::Base) { - def process(options) + konst = Class.new(DispatchRider::Handlers::Base) do + def process(_options) Process.kill("QUIT", 0) end - }) + end + stub_const("Quiter", konst) subject.register_handler(:quiter) - subject.queue_service_registrar.fetch(:simple).push(DispatchRider::Message.new(subject: :quiter, body: {})) + message = DispatchRider::Message.new(subject: :quiter, body: {}) + subject.queue_service_registrar.fetch(:simple).push(message) end example { expect { subject.process }.to throw_symbol(:got_stopped) } end context "when process terminates" do before do - stub_const("Terminator", Class.new(DispatchRider::Handlers::Base) { - def process(options) + konst = Class.new(DispatchRider::Handlers::Base) do + def process(_options) Process.kill("TERM", 0) end - }) + end + stub_const("Terminator", konst) subject.register_handler(:terminator) - subject.queue_service_registrar.fetch(:simple).push(DispatchRider::Message.new(subject: :terminator, body: {})) + message = DispatchRider::Message.new(subject: :terminator, body: {}) + subject.queue_service_registrar.fetch(:simple).push(message) end example { expect { subject.process }.to throw_symbol(:got_stopped) } end context "when process is interupted" do before do - stub_const("Interupter", Class.new(DispatchRider::Handlers::Base) { - def process(options) + konst = Class.new(DispatchRider::Handlers::Base) do + def process(_options) Process.kill("INT", 0) end - }) + end + stub_const("Interupter", konst) subject.register_handler(:interupter) - subject.queue_service_registrar.fetch(:simple).push(DispatchRider::Message.new(subject: :interupter, body: {})) + message = DispatchRider::Message.new(subject: :interupter, body: {}) + subject.queue_service_registrar.fetch(:simple).push(message) end example { expect { subject.process }.to throw_symbol(:got_stopped) } end context "when process is interupted twice" do before do - subject.demultiplexer.stub(:stop) # do nothing just ignore the interuption - subject.stub(:exit){ throw :got_forcefully_stopped } + allow(subject.demultiplexer).to receive(:stop) # do nothing just ignore the interuption + allow(subject).to receive(:exit) { throw :got_forcefully_stopped } - stub_const("TwiceInterupter", Class.new(DispatchRider::Handlers::Base) { + konst = Class.new(DispatchRider::Handlers::Base) do def process(options) 2.times { Process.kill("INT", 0) } end - }) + end + stub_const("TwiceInterupter", konst) subject.register_handler(:twice_interupter) - subject.queue_service_registrar.fetch(:simple).push(DispatchRider::Message.new(subject: :twice_interupter, body: {})) + message = DispatchRider::Message.new(subject: :twice_interupter, body: {}) + subject.queue_service_registrar.fetch(:simple).push(message) end example { expect { subject.process }.to throw_symbol(:got_forcefully_stopped) } end end