summaryrefslogtreecommitdiff
path: root/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb')
-rw-r--r--spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb b/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb
new file mode 100644
index 00000000000..e15011d0dab
--- /dev/null
+++ b/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+# rubocop:disable Style/WordArray
+RSpec.describe FixBatchedMigrationsOldFormatJobArguments do
+ let(:batched_background_migrations) { table(:batched_background_migrations) }
+
+ context 'when migrations with legacy job arguments exists' do
+ it 'updates job arguments to current format' do
+ legacy_events_migration = create_batched_migration('events', 'id', ['id', 'id_convert_to_bigint'])
+ legacy_push_event_payloads_migration = create_batched_migration('push_event_payloads', 'event_id', ['event_id', 'event_id_convert_to_bigint'])
+
+ migrate!
+
+ expect(legacy_events_migration.reload.job_arguments).to eq([['id'], ['id_convert_to_bigint']])
+ expect(legacy_push_event_payloads_migration.reload.job_arguments).to eq([['event_id'], ['event_id_convert_to_bigint']])
+ end
+ end
+
+ context 'when only migrations with current job arguments exists' do
+ it 'updates nothing' do
+ events_migration = create_batched_migration('events', 'id', [['id'], ['id_convert_to_bigint']])
+ push_event_payloads_migration = create_batched_migration('push_event_payloads', 'event_id', [['event_id'], ['event_id_convert_to_bigint']])
+
+ migrate!
+
+ expect(events_migration.reload.job_arguments).to eq([['id'], ['id_convert_to_bigint']])
+ expect(push_event_payloads_migration.reload.job_arguments).to eq([['event_id'], ['event_id_convert_to_bigint']])
+ end
+ end
+
+ context 'when migrations with both legacy and current job arguments exist' do
+ it 'updates nothing' do
+ legacy_events_migration = create_batched_migration('events', 'id', ['id', 'id_convert_to_bigint'])
+ events_migration = create_batched_migration('events', 'id', [['id'], ['id_convert_to_bigint']])
+ legacy_push_event_payloads_migration = create_batched_migration('push_event_payloads', 'event_id', ['event_id', 'event_id_convert_to_bigint'])
+ push_event_payloads_migration = create_batched_migration('push_event_payloads', 'event_id', [['event_id'], ['event_id_convert_to_bigint']])
+
+ migrate!
+
+ expect(legacy_events_migration.reload.job_arguments).to eq(['id', 'id_convert_to_bigint'])
+ expect(events_migration.reload.job_arguments).to eq([['id'], ['id_convert_to_bigint']])
+ expect(legacy_push_event_payloads_migration.reload.job_arguments).to eq(['event_id', 'event_id_convert_to_bigint'])
+ expect(push_event_payloads_migration.reload.job_arguments).to eq([['event_id'], ['event_id_convert_to_bigint']])
+ end
+ end
+
+ def create_batched_migration(table_name, column_name, job_arguments)
+ batched_background_migrations.create!(
+ max_value: 10,
+ batch_size: 10,
+ sub_batch_size: 10,
+ interval: 1,
+ job_class_name: 'CopyColumnUsingBackgroundMigrationJob',
+ table_name: table_name,
+ column_name: column_name,
+ job_arguments: job_arguments
+ )
+ end
+end
+# rubocop:enable Style/WordArray