1
0
Fork 0
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:
Mike Perham 2012-05-02 11:00:51 -07:00
commit e187706f4f
3 changed files with 29 additions and 0 deletions

View file

@ -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
-----------

View file

@ -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

View file

@ -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