mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Merge pull request #172 from panthomakos/perform-at-once
Add perform method to workers in tests.
This commit is contained in:
commit
e187706f4f
3 changed files with 29 additions and 0 deletions
|
@ -26,6 +26,9 @@ end
|
|||
|
||||
- Fix delayed extensions not available in workers [#152]
|
||||
|
||||
- In test environments add the `#drain` class method to workers. This method
|
||||
executes all previously queued jobs. (panthomakos)
|
||||
|
||||
1.1.4
|
||||
-----------
|
||||
|
||||
|
|
|
@ -33,6 +33,12 @@ module Sidekiq
|
|||
def jobs
|
||||
@pushed ||= []
|
||||
end
|
||||
|
||||
def drain
|
||||
while job = jobs.shift do
|
||||
new.perform(*job['args'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,6 +11,8 @@ Sidekiq.hook_rails!
|
|||
|
||||
class TestTesting < MiniTest::Unit::TestCase
|
||||
describe 'sidekiq testing' do
|
||||
class PerformError < RuntimeError; end
|
||||
|
||||
class DirectWorker
|
||||
include Sidekiq::Worker
|
||||
def perform(a, b)
|
||||
|
@ -25,6 +27,13 @@ class TestTesting < MiniTest::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
class StoredWorker
|
||||
include Sidekiq::Worker
|
||||
def perform(error)
|
||||
raise PerformError if error
|
||||
end
|
||||
end
|
||||
|
||||
class FooMailer < ActionMailer::Base
|
||||
def bar(str)
|
||||
str
|
||||
|
@ -73,5 +82,16 @@ class TestTesting < MiniTest::Unit::TestCase
|
|||
assert Sidekiq::Client.enqueue(EnqueuedWorker, 1, 2)
|
||||
assert_equal 1, EnqueuedWorker.jobs.size
|
||||
end
|
||||
|
||||
it 'executes all stored jobs' do
|
||||
assert StoredWorker.perform_async(false)
|
||||
assert StoredWorker.perform_async(true)
|
||||
|
||||
assert_equal 2, StoredWorker.jobs.size
|
||||
assert_raises PerformError do
|
||||
StoredWorker.drain
|
||||
end
|
||||
assert_equal 0, StoredWorker.jobs.size
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue