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]
|
- 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
|
1.1.4
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,12 @@ module Sidekiq
|
||||||
def jobs
|
def jobs
|
||||||
@pushed ||= []
|
@pushed ||= []
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def drain
|
||||||
|
while job = jobs.shift do
|
||||||
|
new.perform(*job['args'])
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,6 +11,8 @@ Sidekiq.hook_rails!
|
||||||
|
|
||||||
class TestTesting < MiniTest::Unit::TestCase
|
class TestTesting < MiniTest::Unit::TestCase
|
||||||
describe 'sidekiq testing' do
|
describe 'sidekiq testing' do
|
||||||
|
class PerformError < RuntimeError; end
|
||||||
|
|
||||||
class DirectWorker
|
class DirectWorker
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
def perform(a, b)
|
def perform(a, b)
|
||||||
|
@ -25,6 +27,13 @@ class TestTesting < MiniTest::Unit::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class StoredWorker
|
||||||
|
include Sidekiq::Worker
|
||||||
|
def perform(error)
|
||||||
|
raise PerformError if error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class FooMailer < ActionMailer::Base
|
class FooMailer < ActionMailer::Base
|
||||||
def bar(str)
|
def bar(str)
|
||||||
str
|
str
|
||||||
|
@ -73,5 +82,16 @@ class TestTesting < MiniTest::Unit::TestCase
|
||||||
assert Sidekiq::Client.enqueue(EnqueuedWorker, 1, 2)
|
assert Sidekiq::Client.enqueue(EnqueuedWorker, 1, 2)
|
||||||
assert_equal 1, EnqueuedWorker.jobs.size
|
assert_equal 1, EnqueuedWorker.jobs.size
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue