spec/active_job/queue_adapters/sqs_adapter/params_spec.rb (58 lines of code) (raw):

# frozen_string_literal: true module ActiveJob module QueueAdapters class SqsAdapter describe Params do describe '.assured_delay_seconds' do let(:now) { Time.now } before { allow(Time).to receive(:now).and_return(now) } it 'returns seconds from present' do unix_time = (now + 15.minutes).to_f expect(Params.assured_delay_seconds(unix_time)).to eq 900 end it 'rounds up to zero' do unix_time = (now - 1.second).to_f expect(Params.assured_delay_seconds(unix_time)).to eq 0 end it 'raise error when 15 minutes after present' do unix_time = (now + 15.minutes + 1.second).to_f expect { Params.assured_delay_seconds(unix_time) }.to raise_error ArgumentError end end describe '#queue_url' do let(:params) { Params.new(job, nil) } let(:job) { TestJob.new('a1', 'a2') } it 'returns url of job queue' do expect(params.queue_url).to eq 'https://queue-url' end end describe '#entry' do let(:params) { Params.new(job, nil) } let(:job) { TestJob.new('a1', 'a2') } it 'returns hash of core attributes' do expect(params.entry).to include( { message_body: instance_of(String), message_attributes: instance_of(Hash) } ) end describe 'fifo queue' do before do allow(Aws::ActiveJob::SQS.config).to receive(:url_for).and_return('https://queue-url.fifo') end it 'includes message_group_id and message_deduplication_id' do expect(params.entry).to include( { message_body: instance_of(String), message_attributes: instance_of(Hash), message_group_id: String, message_deduplication_id: String } ) end end end end end end end