debian-mirror-gitlab/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed_spec.rb
2021-12-11 22:18:48 +05:30

49 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::UntilExecuted do
it_behaves_like 'deduplicating jobs when scheduling', :until_executed do
describe '#perform' do
let(:proc) { -> {} }
before do
allow(fake_duplicate_job).to receive(:latest_wal_locations).and_return( {} )
allow(fake_duplicate_job).to receive(:scheduled?) { false }
allow(fake_duplicate_job).to receive(:options) { {} }
allow(fake_duplicate_job).to receive(:should_reschedule?) { false }
end
it 'deletes the lock after executing' do
expect(proc).to receive(:call).ordered
expect(fake_duplicate_job).to receive(:delete!).ordered
strategy.perform({}) do
proc.call
end
end
it 'does not reschedule the job even if deduplication happened' do
expect(fake_duplicate_job).to receive(:delete!)
expect(fake_duplicate_job).not_to receive(:reschedule)
strategy.perform({}) do
proc.call
end
end
context 'when job is reschedulable' do
it 'reschedules the job if deduplication happened' do
allow(fake_duplicate_job).to receive(:should_reschedule?) { true }
expect(fake_duplicate_job).to receive(:delete!)
expect(fake_duplicate_job).to receive(:reschedule).once
strategy.perform({}) do
proc.call
end
end
end
end
end
end