Commit 6f62020c authored by Jarka Košanová's avatar Jarka Košanová

Make sure milestones project/group are valid

# Conflicts:
#	ee/spec/models/burndown_spec.rb
parent cd3fac82
......@@ -121,6 +121,8 @@ module Issuable
end
def milestone_available?
return if is_a?(Epic)
project_id == milestone&.project_id || project.ancestors_upto.compact.include?(milestone&.group)
end
......
......@@ -133,26 +133,26 @@ describe Burndown do
end
describe 'group milestone burndown' do
let(:group) { create(:group) }
let(:nested_group) { create(:group, parent: group) }
let(:parent_group) { create(:group) }
let(:group) { create(:group, parent: parent_group) }
let(:parent_group_project) { create(:project, group: parent_group) }
let(:group_project) { create(:project, group: group) }
let(:nested_group_project) { create(:project, group: nested_group) }
let(:group_milestone) { create(:milestone, project: nil, group: group, start_date: start_date, due_date: due_date) }
let(:nested_group_milestone) { create(:milestone, group: nested_group, start_date: start_date, due_date: due_date) }
let(:parent_group_milestone) { create(:milestone, project: nil, group: parent_group, start_date: start_date, due_date: due_date) }
let(:group_milestone) { create(:milestone, group: group, start_date: start_date, due_date: due_date) }
context 'when nested group milestone', :nested_groups do
before do
group.add_developer(user)
parent_group.add_developer(user)
end
it_behaves_like 'burndown for milestone' do
let(:milestone) { nested_group_milestone }
let(:project) { nested_group_project }
let(:milestone) { group_milestone }
let(:project) { group_project }
let(:issue_params) do
{
milestone: milestone,
weight: 2,
project_id: nested_group_project.id,
project_id: group_project.id,
author: user,
created_at: milestone.start_date
}
......
require 'spec_helper'
describe Epic do
let(:group) { create(:group) }
let(:project) { create(:project, group: group) }
describe 'associations' do
subject { build(:epic) }
......@@ -221,29 +224,32 @@ describe Epic do
end
context 'fixed date is not set' do
subject { create(:epic, start_date: nil, end_date: nil) }
subject { create(:epic, start_date: nil, end_date: nil, group: group) }
let(:milestone1) do
create(
:milestone,
start_date: Date.new(2000, 1, 1),
due_date: Date.new(2000, 1, 10)
due_date: Date.new(2000, 1, 10),
group: group
)
end
let(:milestone2) do
create(
:milestone,
start_date: Date.new(2000, 1, 3),
due_date: Date.new(2000, 1, 20)
due_date: Date.new(2000, 1, 20),
group: group
)
end
context 'multiple milestones' do
before do
epic_issue1 = create(:epic_issue, epic: subject)
epic_issue1.issue.update(milestone: milestone1)
epic_issue2 = create(:epic_issue, epic: subject)
epic_issue2.issue.update(milestone: milestone2)
issue1 = create(:issue, project: project, milestone: milestone1)
issue2 = create(:issue, project: project, milestone: milestone2)
create(:epic_issue, epic: subject, issue: issue1)
create(:epic_issue, epic: subject, issue: issue2)
end
context 'complete start and due dates' do
......@@ -260,14 +266,16 @@ describe Epic do
create(
:milestone,
start_date: Date.new(2000, 1, 1),
due_date: nil
due_date: nil,
group: group
)
end
let(:milestone2) do
create(
:milestone,
start_date: Date.new(2000, 1, 3),
due_date: nil
due_date: nil,
group: group
)
end
......@@ -284,14 +292,16 @@ describe Epic do
create(
:milestone,
start_date: nil,
due_date: nil
due_date: nil,
group: group
)
end
let(:milestone2) do
create(
:milestone,
start_date: nil,
due_date: nil
due_date: nil,
group: group
)
end
......@@ -322,7 +332,7 @@ describe Epic do
context 'single milestone' do
before do
epic_issue1 = create(:epic_issue, epic: subject)
epic_issue1.issue.update(milestone: milestone1)
epic_issue1.issue.update(milestone: milestone1, project: project)
end
context 'complete start and due dates' do
......@@ -339,7 +349,8 @@ describe Epic do
create(
:milestone,
start_date: Date.new(2000, 1, 1),
due_date: nil
due_date: nil,
group: group
)
end
......@@ -356,7 +367,8 @@ describe Epic do
create(
:milestone,
start_date: nil,
due_date: nil
due_date: nil,
group: group
)
end
......@@ -373,12 +385,12 @@ describe Epic do
describe '.update_start_and_due_dates' do
def link_epic_to_milestone(epic, milestone)
create(:issue, epic: epic, milestone: milestone)
create(:issue, epic: epic, milestone: milestone, project: project)
end
it 'updates in bulk' do
milestone1 = create(:milestone, start_date: Date.new(2000, 1, 1), due_date: Date.new(2000, 1, 10))
milestone2 = create(:milestone, due_date: Date.new(2000, 1, 30))
milestone1 = create(:milestone, start_date: Date.new(2000, 1, 1), due_date: Date.new(2000, 1, 10), group: group)
milestone2 = create(:milestone, due_date: Date.new(2000, 1, 30), group: group)
epics = [
create(:epic),
......@@ -414,8 +426,8 @@ describe Epic do
end
context 'query count check' do
let(:milestone) { create(:milestone, start_date: Date.new(2000, 1, 1), due_date: Date.new(2000, 1, 10)) }
let!(:epics) { [create(:epic)] }
let(:milestone) { create(:milestone, start_date: Date.new(2000, 1, 1), due_date: Date.new(2000, 1, 10), group: group) }
let!(:epics) { [create(:epic, group: group)] }
def setup_control_group
link_epic_to_milestone(epics[0], milestone)
......
......@@ -20,7 +20,8 @@ describe Boards::Issues::ListService, services: true do
let(:p3) { create(:group_label, title: 'P3', group: group) }
let(:user_list) { create(:user_list, board: board, position: 2) }
let(:milestone_list) { create(:milestone_list, board: board, position: 3) }
let(:milestone) { create(:milestone, group: group) }
let(:milestone_list) { create(:milestone_list, board: board, position: 3, milestone: milestone) }
let(:backlog) { create(:backlog_list, board: board) }
let(:list1) { create(:list, board: board, label: development, position: 0) }
let(:list2) { create(:list, board: board, label: testing, position: 1) }
......
......@@ -37,15 +37,6 @@ describe Issuable::Clone::AttributesRewriter do
expect(new_epic.reload.milestone).to be_nil
end
it 'copies the milestone when old issue milestone is a group milestone' do
milestone = create(:milestone, title: 'milestone', group: group)
original_issue.update(milestone: milestone)
subject.execute
expect(new_epic.reload.milestone).to eq(milestone)
end
end
end
end
......@@ -14,10 +14,10 @@ describe Issues::UpdateService do
context 'refresh epic dates' do
let(:epic) { create(:epic) }
let(:issue) { create(:issue, epic: epic) }
let(:issue) { create(:issue, epic: epic, project: project) }
context 'updating milestone' do
let(:milestone) { create(:milestone) }
let(:milestone) { create(:milestone, project: project) }
it 'calls epic#update_start_and_due_dates' do
expect(epic).to receive(:update_start_and_due_dates).twice
......
......@@ -55,9 +55,8 @@ describe EpicIssues::ListService do
control_count = ActiveRecord::QueryRecorder.new { list_service.execute }.count
new_group2 = create(:group, :private)
new_project2 = create(:project, namespace: new_group2)
new_group2.add_developer(user)
milestone3 = create(:milestone, project: new_project2)
milestone3 = create(:milestone, project: new_project)
new_issue4 = create(:issue, project: new_project, milestone: milestone3)
create(:epic_issue, issue: new_issue4, epic: epic, relative_position: 6)
......
......@@ -64,7 +64,6 @@ describe Epics::IssuePromoteService do
expect(epic.description).to eq(issue.description)
expect(epic.author).to eq(user)
expect(epic.group).to eq(group)
expect(epic.milestone).to eq(milestone)
end
it 'copies group labels assigned to the issue' do
......
......@@ -9,7 +9,7 @@ describe Milestones::UpdateService do
user = build(:user)
milestone = create(:milestone, project: project)
epic = create(:epic)
create(:issue, milestone: milestone, epic: epic)
create(:issue, milestone: milestone, epic: epic, project: project)
due_date = 3.days.from_now.to_date
described_class.new(project, user, { due_date: due_date }).execute(milestone)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment