diff options
Diffstat (limited to 'spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb')
-rw-r--r-- | spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb b/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb new file mode 100644 index 00000000000..0dd50efba1c --- /dev/null +++ b/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ScheduleMergeRequestCleanupRefsWorker do + subject(:worker) { described_class.new } + + describe '#perform' do + before do + allow(MergeRequest::CleanupSchedule) + .to receive(:scheduled_merge_request_ids) + .with(described_class::LIMIT) + .and_return([1, 2, 3, 4]) + end + + it 'does nothing if the database is read-only' do + allow(Gitlab::Database).to receive(:read_only?).and_return(true) + expect(MergeRequestCleanupRefsWorker).not_to receive(:bulk_perform_in) + + worker.perform + end + + include_examples 'an idempotent worker' do + it 'schedules MergeRequestCleanupRefsWorker to be performed by batch' do + expect(MergeRequestCleanupRefsWorker) + .to receive(:bulk_perform_in) + .with( + described_class::DELAY, + [[1], [2], [3], [4]], + batch_size: described_class::BATCH_SIZE + ) + + expect(worker).to receive(:log_extra_metadata_on_done).with(:merge_requests_count, 4) + + worker.perform + end + end + end +end |