1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00
mperham--sidekiq/test/test_processor.rb
2012-01-26 12:45:04 -08:00

51 lines
1.2 KiB
Ruby

require 'helper'
require 'sidekiq/processor'
class TestProcessor < MiniTest::Unit::TestCase
describe 'with mock setup' do
before do
$invokes = 0
$errors = []
@boss = MiniTest::Mock.new
end
class MockWorker
def perform(args)
raise "kerboom!" if args == 'boom'
$invokes += 1
end
end
it 'processes as expected' do
msg = { 'class' => MockWorker.to_s, 'args' => ['myarg'] }
processor = ::Sidekiq::Processor.new(@boss)
@boss.expect(:processor_done!, nil, [processor])
processor.process(msg)
@boss.verify
assert_equal 1, $invokes
assert_equal 0, $errors.size
end
it 'handles exceptions' do
msg = { 'class' => MockWorker.to_s, 'args' => ['boom'] }
processor = ::Sidekiq::Processor.new(@boss)
assert_raises RuntimeError do
processor.process(msg)
end
@boss.verify
assert_equal 0, $invokes
assert_equal 1, $errors.size
assert_equal "RuntimeError", $errors[0][:error_class]
assert_equal msg, $errors[0][:parameters]
end
end
end
class FakeAirbrake
def self.notify(hash)
$errors << hash
end
end
Airbrake = FakeAirbrake