Sha256: f80e4cb8b9f66b3d64ae5bfa0cac665d2626c98c71a920bd974f2bd3023c3332

Contents?: true

Size: 1.73 KB

Versions: 10

Compression:

Stored size: 1.73 KB

Contents

require 'spec_helper'

describe Shoryuken do
  describe '.register_worker' do
    it 'registers a worker' do
      described_class.worker_registry.clear
      described_class.register_worker('default', TestWorker)
      expect(described_class.worker_registry.workers('default')).to eq([TestWorker])
    end

    it 'registers a batchable worker' do
      described_class.worker_registry.clear
      TestWorker.get_shoryuken_options['batch'] = true
      described_class.register_worker('default', TestWorker)
      expect(described_class.worker_registry.workers('default')).to eq([TestWorker])
    end

    it 'allows multiple workers' do
      described_class.worker_registry.clear
      described_class.register_worker('default', TestWorker)
      expect(described_class.worker_registry.workers('default')).to eq([TestWorker])

      class Test2Worker
        include Shoryuken::Worker

        shoryuken_options queue: 'default'

        def perform(sqs_msg, body); end
      end

      expect(described_class.worker_registry.workers('default')).to eq([Test2Worker])
    end

    it 'raises an exception when mixing batchable with non batchable' do
      described_class.worker_registry.clear
      TestWorker.get_shoryuken_options['batch'] = true
      described_class.register_worker('default', TestWorker)

      expect {
        class BatchableWorker
          include Shoryuken::Worker

          shoryuken_options queue: 'default', batch: true

          def perform(sqs_msg, body); end
        end
      }.to raise_error("Could not register BatchableWorker for 'default', because TestWorker is already registered for this queue, " \
                       "and Shoryuken doesn't support a batchable worker for a queue with multiple workers.")
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
shoryuken-2.0.4 spec/shoryuken_spec.rb
shoryuken-2.0.3 spec/shoryuken_spec.rb
shoryuken-2.0.2 spec/shoryuken_spec.rb
shoryuken-2.0.1 spec/shoryuken_spec.rb
shoryuken-2.0.0 spec/shoryuken_spec.rb
shoryuken-1.0.3 spec/shoryuken_spec.rb
shoryuken-1.0.2 spec/shoryuken_spec.rb
shoryuken-1.0.1 spec/shoryuken_spec.rb
shoryuken-1.0.0 spec/shoryuken_spec.rb
shoryuken-0.0.5 spec/shoryuken_spec.rb