summaryrefslogtreecommitdiff
path: root/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb
blob: 16258eeb0fbff327b328e0f0d5065f68eb41fd15 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# frozen_string_literal: true

require 'spec_helper'

require_migration!

RSpec.describe FixAutomaticIterationsCadencesStartDate, feature_category: :team_planning 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