summaryrefslogtreecommitdiff
path: root/spec/migrations/schedule_migrate_pages_to_zip_storage_spec.rb
blob: 52bbd5b4f6e2a04cf03a1c8ab72c5457936a28e3 (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
42
43
44
45
46
# frozen_string_literal: true

require 'spec_helper'
require_migration!

RSpec.describe ScheduleMigratePagesToZipStorage, :sidekiq_might_not_need_inline, schema: 20210301200959 do
  let(:migration_class) { described_class::MIGRATION }
  let(:migration_name)  { migration_class.to_s.demodulize }

  let(:namespaces_table) { table(:namespaces) }
  let(:projects_table) { table(:projects) }
  let(:metadata_table) { table(:project_pages_metadata) }
  let(:deployments_table) { table(:pages_deployments) }

  let(:namespace) { namespaces_table.create!(path: "group", name: "group") }

  def create_project_metadata(path, deployed, with_deployment)
    project = projects_table.create!(path: path, namespace_id: namespace.id)

    deployment_id = nil

    if with_deployment
      deployment_id = deployments_table.create!(project_id: project.id, file_store: 1, file: '1', file_count: 1, file_sha256: '123', size: 1).id
    end

    metadata_table.create!(project_id: project.id, deployed: deployed, pages_deployment_id: deployment_id)
  end

  it 'correctly schedules background migrations' do
    Sidekiq::Testing.fake! do
      freeze_time do
        create_project_metadata("not-deployed-project", false, false)

        first_id = create_project_metadata("project1", true, false).id
        last_id = create_project_metadata("project2", true, false).id

        create_project_metadata("project-with-deployment", true, true)

        migrate!

        expect(migration_name).to be_scheduled_delayed_migration(5.minutes, first_id, last_id)
        expect(BackgroundMigrationWorker.jobs.size).to eq(1)
      end
    end
  end
end