test/test_retry_exhausted.rb in sidekiq-4.1.0 vs test/test_retry_exhausted.rb in sidekiq-4.1.1

- old
+ new

@@ -5,34 +5,34 @@ class TestRetryExhausted < Sidekiq::Test describe 'sidekiq_retries_exhausted' do class NewWorker include Sidekiq::Worker - class_attribute :exhausted_called, :exhausted_message, :exhausted_exception + class_attribute :exhausted_called, :exhausted_job, :exhausted_exception - sidekiq_retries_exhausted do |msg, e| + sidekiq_retries_exhausted do |job, e| self.exhausted_called = true - self.exhausted_message = msg + self.exhausted_job = job self.exhausted_exception = e end end class OldWorker include Sidekiq::Worker - class_attribute :exhausted_called, :exhausted_message, :exhausted_exception + class_attribute :exhausted_called, :exhausted_job, :exhausted_exception - sidekiq_retries_exhausted do |msg| + sidekiq_retries_exhausted do |job| self.exhausted_called = true - self.exhausted_message = msg + self.exhausted_job = job end end def cleanup [NewWorker, OldWorker].each do |worker_class| worker_class.exhausted_called = nil - worker_class.exhausted_message = nil + worker_class.exhausted_job = nil worker_class.exhausted_exception = nil end end before do @@ -94,30 +94,56 @@ assert NewWorker.exhausted_called? end - it 'passes message and exception to retries exhausted block' do + it 'passes job and exception to retries exhausted block' do raised_error = assert_raises RuntimeError do handler.call(new_worker, job('retry_count' => 0, 'retry' => 1), 'default') do raise 'kerblammo!' end end assert new_worker.exhausted_called? - assert_equal raised_error.message, new_worker.exhausted_message['error_message'] + assert_equal raised_error.message, new_worker.exhausted_job['error_message'] assert_equal raised_error, new_worker.exhausted_exception end - it 'passes message to retries exhausted block' do + it 'passes job to retries exhausted block' do raised_error = assert_raises RuntimeError do handler.call(old_worker, job('retry_count' => 0, 'retry' => 1), 'default') do raise 'kerblammo!' end end assert old_worker.exhausted_called? - assert_equal raised_error.message, old_worker.exhausted_message['error_message'] + assert_equal raised_error.message, old_worker.exhausted_job['error_message'] assert_equal nil, new_worker.exhausted_exception + end + + it 'allows a global default handler' do + begin + class Foobar + include Sidekiq::Worker + end + + exhausted_job = nil + exhausted_exception = nil + Sidekiq.default_retries_exhausted = lambda do |job, ex| + exhausted_job = job + exhausted_exception = ex + end + f = Foobar.new + raised_error = assert_raises RuntimeError do + handler.call(f, job('retry_count' => 0, 'retry' => 1), 'default') do + raise 'kerblammo!' + end + end + + assert exhausted_job + assert_equal raised_error, exhausted_exception + ensure + Sidekiq.default_retries_exhausted = nil + end end end end