Sha256: ab30a125c92af956caf699ebe549c3721358f7bdd206c4ce4c7757ce7686a644

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

require 'spec_helper'

describe Shoryuken::Middleware::Server::AutoDelete do
  let(:sqs_msg)   { double AWS::SQS::ReceivedMessage, id: 'fc754df7-9cc2-4c41-96ca-5996a44b771e', body: 'test' }
  let(:queue)     { 'default' }
  let(:sqs_queue) { double AWS::SQS::Queue }

  before do
    allow(Shoryuken::Client).to receive(:queues).with(queue).and_return(sqs_queue)
  end

  it 'deletes a message' do
    TestWorker.get_shoryuken_options['delete'] = true

    expect(sqs_queue).to receive(:batch_delete).with(sqs_msg)

    subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) {}
  end

  it 'deletes a batch' do
    TestWorker.get_shoryuken_options['delete'] = true

    sqs_msg2 = double 'SQS msg', body: 'test'
    sqs_msg3 = double 'SQS msg', body: 'test'

    sqs_msgs = [sqs_msg, sqs_msg2, sqs_msg3]

    expect(sqs_queue).to receive(:batch_delete).with(*sqs_msgs)

    subject.call(TestWorker.new, queue, sqs_msgs, [sqs_msg.body, sqs_msg2.body, sqs_msg3.body]) {}
  end

  it 'does not delete a message' do
    TestWorker.get_shoryuken_options['delete'] = false

    expect(sqs_queue).to_not receive(:batch_delete)

    subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) {}
  end

  context 'when exception' do
    it 'does not delete a message' do
      expect(sqs_queue).to_not receive(:batch_delete)

      expect {
        subject.call(TestWorker.new, queue, sqs_msg, sqs_msg.body) { raise }
      }.to raise_error
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoryuken-0.0.3 spec/shoryuken/middleware/server/auto_delete_spec.rb