summaryrefslogtreecommitdiff
path: root/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb
diff options
context:
space:
mode:
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.rb39
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