From 8adba078879d2006efc26c6f8653ea360f6b7eb3 Mon Sep 17 00:00:00 2001 From: Mike Perham Date: Sat, 17 Mar 2012 17:59:18 -0700 Subject: [PATCH] Simplify middleware testing --- lib/sidekiq/middleware/chain.rb | 4 ++++ test/test_middleware.rb | 20 ++++++++++++++++++++ test/test_processor.rb | 20 -------------------- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/lib/sidekiq/middleware/chain.rb b/lib/sidekiq/middleware/chain.rb index 02e962ae..534caa99 100644 --- a/lib/sidekiq/middleware/chain.rb +++ b/lib/sidekiq/middleware/chain.rb @@ -64,6 +64,10 @@ module Sidekiq entries.map(&:make_new) end + def clear + entries.clear + end + def invoke(*args, &final_action) chain = retrieve.dup traverse_chain = lambda do diff --git a/test/test_middleware.rb b/test/test_middleware.rb index 62904754..b4c5f3d0 100644 --- a/test/test_middleware.rb +++ b/test/test_middleware.rb @@ -6,9 +6,22 @@ require 'sidekiq/processor' class TestMiddleware < MiniTest::Unit::TestCase describe 'middleware chain' do before do + $errors = [] Sidekiq.redis = REDIS end + it 'handles errors' do + handler = Sidekiq::Middleware::Server::ExceptionHandler.new + + assert_raises ArgumentError do + handler.call('', { :a => 1 }, 'default') do + raise ArgumentError + end + end + assert_equal 1, $errors.size + assert_equal({ :a => 1 }, $errors[0][:parameters]) + end + class CustomMiddleware def initialize(name, recorder) @name = name @@ -70,3 +83,10 @@ class TestMiddleware < MiniTest::Unit::TestCase end end end + +class FakeAirbrake + def self.notify(ex, hash) + $errors << hash + end +end +Airbrake = FakeAirbrake diff --git a/test/test_processor.rb b/test/test_processor.rb index 0f6a9a79..9f69c759 100644 --- a/test/test_processor.rb +++ b/test/test_processor.rb @@ -28,25 +28,5 @@ class TestProcessor < MiniTest::Unit::TestCase assert_equal 1, $invokes assert_equal 0, $errors.size end - - it 'handles exceptions' do - msg = { 'class' => MockWorker.to_s, 'args' => ['boom'] } - processor = ::Sidekiq::Processor.new(@boss) - assert_raises RuntimeError do - processor.process(msg, 'default') - end - @boss.verify - assert_equal 0, $invokes - assert_equal 1, $errors.size - assert_equal msg, $errors[0][:parameters] - end - end end - -class FakeAirbrake - def self.notify(ex, hash) - $errors << hash - end -end -Airbrake = FakeAirbrake