summaryrefslogtreecommitdiff
path: root/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb
blob: 8a76f0847e96cd621c491eb1749cbd67cb2c7ff4 (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
# frozen_string_literal: true

require 'spec_helper'
require_migration!

RSpec.describe ScheduleCleanupOrphanedLfsObjectsProjects, schema: 20210511165250, feature_category: :git_lfs do
  let(:lfs_objects_projects) { table(:lfs_objects_projects) }
  let(:projects) { table(:projects) }
  let(:namespaces) { table(:namespaces) }
  let(:lfs_objects) { table(:lfs_objects) }

  let(:namespace) { namespaces.create!(name: 'namespace', path: 'namespace') }
  let(:project) { projects.create!(namespace_id: namespace.id) }
  let(:another_project) { projects.create!(namespace_id: namespace.id) }
  let(:lfs_object) { lfs_objects.create!(oid: 'abcdef', size: 1) }
  let(:another_lfs_object) { lfs_objects.create!(oid: '1abcde', size: 2) }

  describe '#up' do
    it 'schedules CleanupOrphanedLfsObjectsProjects background jobs' do
      stub_const("#{described_class}::BATCH_SIZE", 2)

      lfs_objects_project1 = lfs_objects_projects.create!(project_id: project.id, lfs_object_id: lfs_object.id)
      lfs_objects_project2 = lfs_objects_projects.create!(project_id: another_project.id, lfs_object_id: lfs_object.id)
      lfs_objects_project3 = lfs_objects_projects.create!(project_id: project.id, lfs_object_id: another_lfs_object.id)
      lfs_objects_project4 = lfs_objects_projects.create!(project_id: another_project.id, lfs_object_id: another_lfs_object.id)

      freeze_time do
        migrate!

        expect(described_class::MIGRATION).to be_scheduled_delayed_migration(2.minutes, lfs_objects_project1.id, lfs_objects_project2.id)
        expect(described_class::MIGRATION).to be_scheduled_delayed_migration(4.minutes, lfs_objects_project3.id, lfs_objects_project4.id)

        expect(BackgroundMigrationWorker.jobs.size).to eq(2)
      end
    end
  end
end