Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb')
-rw-r--r--spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb b/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb
new file mode 100644
index 00000000000..8bc336a6b26
--- /dev/null
+++ b/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+require_migration!
+
+RSpec.describe FixAutomaticIterationsCadencesStartDate,
+ quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/362446' do
+ let(:migration) { described_class.new }
+ let(:namespaces) { table(:namespaces) }
+ let(:sprints) { table(:sprints) }
+ let(:iterations_cadences) { table(:iterations_cadences) }
+
+ let!(:group1) { namespaces.create!(name: 'abc', path: 'abc') }
+ let!(:group2) { namespaces.create!(name: 'def', path: 'def') }
+
+ let(:jan2022) { Date.new(2022, 1, 1) }
+ let(:feb2022) { Date.new(2022, 2, 1) }
+ let(:may2022) { Date.new(2022, 5, 1) }
+ let(:dec2022) { Date.new(2022, 12, 1) }
+
+ let!(:cadence1) { iterations_cadences.create!(start_date: jan2022, title: "ic 1", group_id: group1.id) }
+ let!(:cadence2) { iterations_cadences.create!(start_date: may2022, group_id: group1.id, title: "ic 2") }
+ let!(:cadence3) do
+ iterations_cadences.create!(start_date: jan2022, automatic: false, group_id: group2.id, title: "ic 3 (invalid)")
+ end
+
+ let!(:cadence4) { iterations_cadences.create!(start_date: jan2022, group_id: group2.id, title: "ic 4 (invalid)") }
+
+ before do
+ sprints.create!(id: 2, start_date: jan2022, due_date: jan2022 + 1.week, iterations_cadence_id: cadence1.id,
+ group_id: group1.id, iid: 1)
+ sprints.create!(id: 1, start_date: dec2022, due_date: dec2022 + 1.week, iterations_cadence_id: cadence1.id,
+ group_id: group1.id, iid: 2)
+
+ sprints.create!(id: 4, start_date: feb2022, due_date: feb2022 + 1.week, iterations_cadence_id: cadence3.id,
+ group_id: group2.id, iid: 1)
+ sprints.create!(id: 3, start_date: may2022, due_date: may2022 + 1.week, iterations_cadence_id: cadence3.id,
+ group_id: group2.id, iid: 2)
+
+ sprints.create!(id: 5, start_date: may2022, due_date: may2022 + 1.week, iterations_cadence_id: cadence4.id,
+ group_id: group2.id, iid: 4)
+ sprints.create!(id: 6, start_date: feb2022, due_date: feb2022 + 1.week, iterations_cadence_id: cadence4.id,
+ group_id: group2.id, iid: 3)
+ end
+
+ describe '#up' do
+ it "updates automatic iterations_cadence records to use start dates of their earliest sprint records" do
+ migrate!
+
+ # This cadence has a valid start date. Its start date should be left as it is
+ expect(cadence1.reload.start_date).to eq jan2022
+
+ # This cadence doesn't have an iteration. Its start date should be left as it is.
+ expect(cadence2.reload.start_date).to eq may2022
+
+ # This cadence has an invalid start date but it isn't automatic. Its start date should be left as it is.
+ expect(cadence3.reload.start_date).to eq jan2022
+
+ # This cadence has an invalid start date. Its start date should be fixed.
+ expect(cadence4.reload.start_date).to eq feb2022
+ end
+ end
+end