gitlab-org--gitlab-foss/spec/migrations/20211130165043_backfill_seq...

43 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
require_migration!
RSpec.describe BackfillSequenceColumnForSprintsTable, :migration, schema: 20211126042235 do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:sprints) { table(:sprints) }
let(:iterations_cadences) { table(:iterations_cadences) }
let!(:group) { namespaces.create!(name: 'foo', path: 'foo') }
let!(:cadence_1) { iterations_cadences.create!(group_id: group.id, title: "cadence 1") }
let!(:cadence_2) { iterations_cadences.create!(group_id: group.id, title: "cadence 2") }
let!(:iteration_1) { sprints.create!(id: 1, group_id: group.id, iterations_cadence_id: cadence_1.id, start_date: Date.new(2021, 11, 1), due_date: Date.new(2021, 11, 5), iid: 1, title: 'a' ) }
let!(:iteration_2) { sprints.create!(id: 2, group_id: group.id, iterations_cadence_id: cadence_1.id, start_date: Date.new(2021, 12, 1), due_date: Date.new(2021, 12, 5), iid: 2, title: 'b') }
let!(:iteration_3) { sprints.create!(id: 3, group_id: group.id, iterations_cadence_id: cadence_2.id, start_date: Date.new(2021, 12, 1), due_date: Date.new(2021, 12, 5), iid: 4, title: 'd') }
let!(:iteration_4) { sprints.create!(id: 4, group_id: group.id, iterations_cadence_id: nil, start_date: Date.new(2021, 11, 15), due_date: Date.new(2021, 11, 20), iid: 3, title: 'c') }
describe '#up' do
it "correctly sets the sequence attribute with idempotency" do
migration.up
expect(iteration_1.reload.sequence).to be 1
expect(iteration_2.reload.sequence).to be 2
expect(iteration_3.reload.sequence).to be 1
expect(iteration_4.reload.sequence).to be nil
iteration_5 = sprints.create!(id: 5, group_id: group.id, iterations_cadence_id: cadence_1.id, start_date: Date.new(2022, 1, 1), due_date: Date.new(2022, 1, 5), iid: 1, title: 'e' )
migration.down
migration.up
expect(iteration_1.reload.sequence).to be 1
expect(iteration_2.reload.sequence).to be 2
expect(iteration_5.reload.sequence).to be 3
expect(iteration_3.reload.sequence).to be 1
expect(iteration_4.reload.sequence).to be nil
end
end
end