Skip to content

Commit

Permalink
Add activejob basic testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Pablo Cantero committed Jan 22, 2018
1 parent 70a4ffc commit 58cf0b6
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/shoryuken/extensions/active_job_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def enqueue(job, options = {}) #:nodoc:
register_worker!(job)

queue = Shoryuken::Client.queues(job.queue_name)
queue.send_message(message(job, options))
queue.send_message(message(queue, job, options))
end

def enqueue_at(job, timestamp) #:nodoc:
Expand All @@ -46,7 +46,7 @@ def enqueue_at(job, timestamp) #:nodoc:

private

def message(job, options = {})
def message(queue, job, options = {})
body = job.serialize

msg = {}
Expand Down
46 changes: 46 additions & 0 deletions spec/shoryuken/extensions/active_job_adapter_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
require 'spec_helper'
require 'active_job'
require 'shoryuken/extensions/active_job_adapter'

RSpec.describe ActiveJob::QueueAdapters::ShoryukenAdapter do
let(:job) { double 'Job', id: '123', queue_name: 'queue' }
let(:fifo) { false }
let(:queue) { double 'Queue', fifo?: fifo }

before do
allow(Shoryuken::Client).to receive(:queues).with(job.queue_name).and_return(queue)
allow(job).to receive(:serialize).and_return({
'job_class' => 'Worker',
'job_id' => job.id,
'queue_name' => job.queue_name,
'arguments' => nil,
'locale' => nil
})
end

describe '#enqueue' do
specify do
expect(queue).to receive(:send_message) do |hash|
expect(hash[:message_deduplication_id]).to_not be
end
expect(Shoryuken).to receive(:register_worker).with(job.queue_name, described_class::JobWrapper)

subject.enqueue(job)
end

context 'when fifo' do
let(:fifo) { true }

it 'does not include job_id in the deduplication_id' do
expect(queue).to receive(:send_message) do |hash|
message_deduplication_id = Digest::SHA256.hexdigest(JSON.dump(job.serialize.except('job_id')))

expect(hash[:message_deduplication_id]).to eq(message_deduplication_id)
end
expect(Shoryuken).to receive(:register_worker).with(job.queue_name, described_class::JobWrapper)

subject.enqueue(job)
end
end
end
end

0 comments on commit 58cf0b6

Please sign in to comment.