Skip to content

Commit

Permalink
Add a queue registration class.
Browse files Browse the repository at this point in the history
  • Loading branch information
Senjai committed Nov 6, 2015
1 parent 4a124b2 commit 267b825
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/shoryuken.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
require 'shoryuken/queue'
require 'shoryuken/message'
require 'shoryuken/client'
require 'shoryuken/queue_registration'
require 'shoryuken/worker'
require 'shoryuken/worker_registry'
require 'shoryuken/default_worker_registry'
Expand Down
21 changes: 21 additions & 0 deletions lib/shoryuken/queue_registration.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module Shoryuken
class QueueRegistration
def initialize worker
@worker = worker
end

def register_queues! queues
normalize_queues(queues).each do |queue|
Shoryuken.register_worker queue, @worker
end
end

private

def normalize_queues queues
Array(queues).map do |queue|
queue.respond_to?(:call) ? queue.call : queue
end
end
end
end
32 changes: 32 additions & 0 deletions spec/shoryuken/queue_registration_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
require 'spec_helper'

RSpec.describe Shoryuken::QueueRegistration do
describe "#register_queues!" do
let(:queues) { ["queue", -> {"block_queue"}] }
let(:unregistered_queue) { "somequeue" }
let(:dummy_worker) { Class.new }

before do
dummy_worker.include Shoryuken::Worker
allow(Shoryuken).to receive(:register_worker)
end

subject { described_class.new(dummy_worker).register_queues! queues }

it "registers normal string queues" do
expect(Shoryuken).to receive(:register_worker).
with("queue", dummy_worker)
subject
end

it "registers the result of a block queue" do
expect(Shoryuken).to receive(:register_worker).
with("block_queue", dummy_worker)
subject
end

it "returns the queues that were registered" do
expect(subject).to eql(["queue", "block_queue"])
end
end
end

0 comments on commit 267b825

Please sign in to comment.