diff options
Diffstat (limited to 'spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb')
-rw-r--r-- | spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb b/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb new file mode 100644 index 00000000000..126d49790a5 --- /dev/null +++ b/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe RescheduleIssueWorkItemTypeIdBackfill, :migration do + let_it_be(:migration) { described_class::MIGRATION } + let_it_be(:interval) { 2.minutes } + let_it_be(:issue_type_enum) { { issue: 0, incident: 1, test_case: 2, requirement: 3, task: 4 } } + let_it_be(:base_work_item_type_ids) do + table(:work_item_types).where(namespace_id: nil).order(:base_type).each_with_object({}) do |type, hash| + hash[type.base_type] = type.id + end + end + + describe '#up' do + it 'correctly schedules background migrations' do + Sidekiq::Testing.fake! do + freeze_time do + migrate! + + scheduled_migrations = Gitlab::Database::BackgroundMigration::BatchedMigration.where( + job_class_name: migration + ) + work_item_types = table(:work_item_types).where(namespace_id: nil) + + expect(scheduled_migrations.count).to eq(work_item_types.count) + + [:issue, :incident, :test_case, :requirement, :task].each do |issue_type| + expect(migration).to have_scheduled_batched_migration( + table_name: :issues, + column_name: :id, + job_arguments: [issue_type_enum[issue_type], base_work_item_type_ids[issue_type_enum[issue_type]]], + interval: interval, + batch_size: described_class::BATCH_SIZE, + max_batch_size: described_class::MAX_BATCH_SIZE, + sub_batch_size: described_class::SUB_BATCH_SIZE, + batch_class_name: described_class::BATCH_CLASS_NAME + ) + end + end + end + end + end + + describe '#down' do + it 'deletes all batched migration records' do + migrate! + schema_migrate_down! + + expect(migration).not_to have_scheduled_batched_migration + end + end +end |