57 lines
1.5 KiB
Ruby
57 lines
1.5 KiB
Ruby
# 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
|