summaryrefslogtreecommitdiff
path: root/spec/models/group_milestone_spec.rb
blob: 01856870fe046a8de315e19399c794157e53fc7c (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
# frozen_string_literal: true

require 'spec_helper'

describe GroupMilestone do
  let(:group) { create(:group) }
  let(:project) { create(:project, group: group) }
  let(:project_milestone) do
    create(:milestone, title: "Milestone v1.2", project: project)
  end

  describe '.build' do
    it 'returns milestone with group assigned' do
      milestone = described_class.build(
        group,
        [project],
        project_milestone.title
      )

      expect(milestone.group).to eq group
    end
  end

  describe '.build_collection' do
    let(:group) { create(:group) }
    let(:project1) { create(:project, group: group) }
    let(:project2) { create(:project, path: 'gitlab-ci', group: group) }
    let(:project3) { create(:project, path: 'cookbook-gitlab', group: group) }

    let!(:projects) do
      [
          project1,
          project2,
          project3
      ]
    end

    it 'returns array of milestones, each with group assigned' do
      milestones = described_class.build_collection(group, [project], {})
      expect(milestones).to all(have_attributes(group: group))
    end

    context 'when adding new milestones' do
      it 'does not add more queries' do
        control_count = ActiveRecord::QueryRecorder.new do
          described_class.build_collection(group, projects, {})
        end.count

        create(:milestone, title: 'This title', project: project1)

        expect do
          described_class.build_collection(group, projects, {})
        end.not_to exceed_all_query_limit(control_count)
      end
    end
  end
end