From 2399d13dbbccda1f54e27ee5bbdec9b71dcc5868 Mon Sep 17 00:00:00 2001 From: Ryan LeCompte Date: Wed, 8 Feb 2012 17:28:12 -0800 Subject: [PATCH] add tests for non-yielding middleware --- test/test_middleware.rb | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/test/test_middleware.rb b/test/test_middleware.rb index 8bc4b8e3..a087452f 100644 --- a/test/test_middleware.rb +++ b/test/test_middleware.rb @@ -38,6 +38,11 @@ class TestMiddleware < MiniTest::Unit::TestCase end end + class NonYieldingMiddleware + def call(*args) + end + end + it 'executes middleware in the proper order' do Sidekiq::Middleware::Server::UniqueJobs.class_eval do def call(worker, msg); yield; end @@ -55,9 +60,20 @@ class TestMiddleware < MiniTest::Unit::TestCase processor.process(msg) assert_equal recorder.flatten, %w(0 before 1 before work_performed 1 after 0 after) end + + it 'allows middleware to abruptly stop processing rest of chain' do + recorder = [] + chain = Sidekiq::Middleware::Chain.new + + chain.register do + use NonYieldingMiddleware + use CustomMiddleware, 1, recorder + end + + final_action = nil + chain.invoke { final_action = true } + assert_equal final_action, nil + assert_equal recorder, [] + end end -end - - - - +end \ No newline at end of file