summaryrefslogtreecommitdiff
path: root/spec/migrations/schedule_merge_request_cleanup_schedules_backfill_spec.rb
blob: fa8dd38619a80b891d17ec98f4e3366b1cd32a9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# frozen_string_literal: true

require 'spec_helper'

require_migration!

RSpec.describe ScheduleMergeRequestCleanupSchedulesBackfill, :sidekiq, schema: 20201023114628 do
  let(:merge_requests) { table(:merge_requests) }
  let(:cleanup_schedules) { table(:merge_request_cleanup_schedules) }

  let(:namespace) { table(:namespaces).create!(name: 'name', path: 'path') }
  let(:project) { table(:projects).create!(namespace_id: namespace.id) }

  describe '#up' do
    let!(:open_mr) { merge_requests.create!(target_project_id: project.id, source_branch: 'master', target_branch: 'master') }

    let!(:closed_mr_1) { merge_requests.create!(target_project_id: project.id, source_branch: 'master', target_branch: 'master', state_id: 2) }
    let!(:closed_mr_2) { merge_requests.create!(target_project_id: project.id, source_branch: 'master', target_branch: 'master', state_id: 2) }

    let!(:merged_mr_1) { merge_requests.create!(target_project_id: project.id, source_branch: 'master', target_branch: 'master', state_id: 3) }
    let!(:merged_mr_2) { merge_requests.create!(target_project_id: project.id, source_branch: 'master', target_branch: 'master', state_id: 3) }

    before do
      stub_const("#{described_class}::BATCH_SIZE", 2)
    end

    it 'schdules BackfillMergeRequestCleanupSchedules background jobs' do
      Sidekiq::Testing.fake! do
        migrate!

        aggregate_failures do
          expect(described_class::MIGRATION)
            .to be_scheduled_delayed_migration(2.minutes, closed_mr_1.id, closed_mr_2.id)
          expect(described_class::MIGRATION)
            .to be_scheduled_delayed_migration(4.minutes, merged_mr_1.id, merged_mr_2.id)
          expect(BackgroundMigrationWorker.jobs.size).to eq(2)
        end
      end
    end
  end
end