Skip to content

Commit

Permalink
Add specs for allowing override of queue name in worker
Browse files Browse the repository at this point in the history
  • Loading branch information
lardawge committed Aug 26, 2015
1 parent 75f824d commit a2f0b67
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ This must be set before you assign an upload:
```

### Override worker
To overide the worker in cases where additional methods need to be called or you have app specific requirements, pass the worker class as the
To override the worker in cases where additional methods need to be called or you have app specific requirements, pass the worker class as the
second argument:

```ruby
Expand Down
9 changes: 6 additions & 3 deletions lib/backgrounder/support/backends.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ def enqueue_resque(worker, *args)
end

def enqueue_sidekiq(worker, *args)
args = sidekiq_queue_options('class' => worker, 'args' => args)
override_queue_name = worker.sidekiq_options['queue'] == 'default' || worker.sidekiq_options['queue'].nil?
args = sidekiq_queue_options(override_queue_name, 'class' => worker, 'args' => args)
worker.client_push(args)
end

Expand Down Expand Up @@ -73,8 +74,10 @@ def enqueue_immediate(worker, *args)
worker.new(*args).perform
end

def sidekiq_queue_options(args)
args['queue'] = queue_options[:queue] if queue_options[:queue] && args['class'].sidekiq_options['queue'] == 'default'
def sidekiq_queue_options(override_queue_name, args)
if override_queue_name && queue_options[:queue]
args['queue'] = queue_options[:queue]
end
args['retry'] = queue_options[:retry] unless queue_options[:retry].nil?
args['timeout'] = queue_options[:timeout] if queue_options[:timeout]
args['backtrace'] = queue_options[:backtrace] if queue_options[:backtrace]
Expand Down
10 changes: 10 additions & 0 deletions spec/backgrounder/support/backends_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,16 @@ def self.perform(*args); new(*args).perform; end
mock_module.backend :sidekiq, options
mock_module.enqueue_for_backend(MockSidekiqWorker, *args)
end

it 'does not override queue name if set it worker' do
expect(MockNamedSidekiqWorker).to receive(:client_push).with({ 'class' => MockNamedSidekiqWorker,
'retry' => false,
'timeout' => 60,
'args' => args })
options = {:retry => false, :timeout => 60}
mock_module.backend :sidekiq, options
mock_module.enqueue_for_backend(MockNamedSidekiqWorker, *args)
end
end

context 'girl_friday' do
Expand Down
1 change: 1 addition & 0 deletions spec/support/backend_constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def self.included(base)

module ClassMethods
def sidekiq_options(opts = {})
opts
end

def client_push(item)
Expand Down
5 changes: 5 additions & 0 deletions spec/support/mock_worker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,8 @@ def set_args(klass, id, column)
class MockSidekiqWorker < MockWorker
include Sidekiq::Worker
end

class MockNamedSidekiqWorker < MockWorker
include Sidekiq::Worker
sidekiq_options queue: :even_better_name
end

0 comments on commit a2f0b67

Please sign in to comment.