Commit 1d5f6264 authored by Mark Chao's avatar Mark Chao

Use stored milestone references to obtain milestone dates

parent 821b14be
...@@ -155,12 +155,12 @@ module EE ...@@ -155,12 +155,12 @@ module EE
# Earliest start date from issues' milestones # Earliest start date from issues' milestones
def start_date_from_milestones def start_date_from_milestones
start_date_is_fixed? ? epic_issues.joins(issue: :milestone).minimum('milestones.start_date') : start_date start_date_is_fixed? ? start_date_sourcing_milestone.start_date : start_date
end end
# Latest end date from issues' milestones # Latest end date from issues' milestones
def due_date_from_milestones def due_date_from_milestones
due_date_is_fixed? ? epic_issues.joins(issue: :milestone).maximum('milestones.due_date') : due_date due_date_is_fixed? ? due_date_sourcing_milestone.due_date : due_date
end end
def to_reference(from = nil, full: false) def to_reference(from = nil, full: false)
......
...@@ -99,76 +99,40 @@ describe Epic do ...@@ -99,76 +99,40 @@ describe Epic do
describe '#start_date_from_milestones' do describe '#start_date_from_milestones' do
context 'fixed date' do context 'fixed date' do
subject { create(:epic, :use_fixed_dates) } it 'returns start date from start date sourcing milestone' do
let(:date) { Date.new(2017, 3, 4) } subject = create(:epic, :use_fixed_dates)
milestone = create(:milestone, :with_dates)
subject.start_date_sourcing_milestone = milestone
before do expect(subject.start_date_from_milestones).to eq(milestone.start_date)
milestone1 = create(
:milestone,
start_date: date,
due_date: date + 10.days
)
epic_issue1 = create(:epic_issue, epic: subject)
epic_issue1.issue.update(milestone: milestone1)
milestone2 = create(
:milestone,
start_date: date + 5.days,
due_date: date + 15.days
)
epic_issue2 = create(:epic_issue, epic: subject)
epic_issue2.issue.update(milestone: milestone2)
end
it 'returns earliest start date from issue milestones' do
expect(subject.start_date_from_milestones).to eq(date)
end end
end end
context 'milestone date' do context 'milestone date' do
subject { create(:epic, start_date: date) }
let(:date) { Date.new(2017, 3, 4) }
it 'returns start_date' do it 'returns start_date' do
expect(subject.start_date_from_milestones).to eq(date) subject = create(:epic, start_date: Date.new(2017, 3, 4))
expect(subject.start_date_from_milestones).to eq(subject.start_date)
end end
end end
end end
describe '#due_date_from_milestones' do describe '#due_date_from_milestones' do
context 'fixed date' do context 'fixed date' do
subject { create(:epic, :use_fixed_dates) } it 'returns due date from due date sourcing milestone' do
let(:date) { Date.new(2017, 3, 4) } subject = create(:epic, :use_fixed_dates)
milestone = create(:milestone, :with_dates)
subject.due_date_sourcing_milestone = milestone
before do expect(subject.due_date_from_milestones).to eq(milestone.due_date)
milestone1 = create(
:milestone,
start_date: date - 30.days,
due_date: date - 20.days
)
epic_issue1 = create(:epic_issue, epic: subject)
epic_issue1.issue.update(milestone: milestone1)
milestone2 = create(
:milestone,
start_date: date - 10.days,
due_date: date
)
epic_issue2 = create(:epic_issue, epic: subject)
epic_issue2.issue.update(milestone: milestone2)
end
it 'returns latest due date from issue milestones' do
expect(subject.due_date_from_milestones).to eq(date)
end end
end end
context 'milestone date' do context 'milestone date' do
subject { create(:epic, due_date: date) }
let(:date) { Date.new(2017, 3, 4) }
it 'returns due_date' do it 'returns due_date' do
expect(subject.due_date_from_milestones).to eq(date) subject = create(:epic, due_date: Date.new(2017, 3, 4))
expect(subject.due_date_from_milestones).to eq(subject.due_date)
end end
end end
end end
......
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