diff --git a/lib/sidekiq/testing.rb b/lib/sidekiq/testing.rb index c50f0fca..62d4d360 100644 --- a/lib/sidekiq/testing.rb +++ b/lib/sidekiq/testing.rb @@ -87,6 +87,12 @@ module Sidekiq new.perform(*job['args']) end end + + # Pop out a single job and perform it + def shift_and_perform + job = jobs.shift + new.perform(*job['args']) + end end class << self diff --git a/test/test_testing.rb b/test/test_testing.rb index 51f559db..35aa1cfd 100644 --- a/test/test_testing.rb +++ b/test/test_testing.rb @@ -119,6 +119,17 @@ class TestTesting < Minitest::Test StoredWorker.clear end + it 'shift_and_perform runs only one job' do + assert StoredWorker.perform_async(:first) + assert StoredWorker.perform_async(:second) + assert_equal 2, StoredWorker.jobs.size + + StoredWorker.shift_and_perform + assert_equal 1, StoredWorker.jobs.size + + StoredWorker.clear + end + class FirstWorker include Sidekiq::Worker class_attribute :count