Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
93b05616
Commit
93b05616
authored
Jul 25, 2018
by
Mark Chao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reduce query for update_dates to 1 select
parent
dbb08f2a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
9 deletions
+32
-9
ee/app/models/ee/epic.rb
ee/app/models/ee/epic.rb
+9
-2
ee/spec/models/epic_spec.rb
ee/spec/models/epic_spec.rb
+23
-7
No files found.
ee/app/models/ee/epic.rb
View file @
93b05616
...
...
@@ -111,8 +111,15 @@ module EE
alias_attribute
(
:due_date
,
:end_date
)
def
update_dates
self
.
start_date
=
compute_start_date
self
.
due_date
=
compute_due_date
if
!
start_date_is_fixed?
||
!
due_date_is_fixed?
milestone_dates
=
issues
.
joins
(
:milestone
)
.
pluck
(
'MIN(milestones.start_date)'
,
'MAX(milestones.due_date)'
)
.
first
end
self
.
start_date
=
start_date_is_fixed?
?
start_date_fixed
:
milestone_dates
[
0
]
self
.
due_date
=
due_date_is_fixed?
?
due_date_fixed
:
milestone_dates
[
1
]
save
if
changed?
end
...
...
ee/spec/models/epic_spec.rb
View file @
93b05616
...
...
@@ -165,17 +165,33 @@ describe Epic do
context
'fixed date is not set'
do
subject
{
create
(
:epic
,
start_date:
nil
,
end_date:
nil
)
}
let
(
:start_date
)
{
Date
.
new
(
2001
,
1
,
1
)
}
let
(
:due_date
)
{
Date
.
new
(
2002
,
1
,
1
)
}
let
(
:milestone1
)
{
create
(
:milestone
,
start_date:
Date
.
new
(
2000
,
1
,
1
),
due_date:
Date
.
new
(
2000
,
1
,
10
)
)
}
let
(
:milestone2
)
{
create
(
:milestone
,
start_date:
Date
.
new
(
2000
,
1
,
3
),
due_date:
Date
.
new
(
2000
,
1
,
20
)
)
}
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
)
end
it
'updates to milestone dates'
do
expect
(
subject
).
to
receive
(
:start_date_from_milestones
).
and_return
(
start_date
)
expect
(
subject
).
to
receive
(
:due_date_from_milestones
).
and_return
(
due_date
)
subject
.
update_dates
expect
(
subject
.
start_date
).
to
eq
(
start_date
)
expect
(
subject
.
due_date
).
to
eq
(
due_date
)
expect
(
subject
.
start_date
).
to
eq
(
milestone1
.
start_date
)
expect
(
subject
.
due_date
).
to
eq
(
milestone2
.
due_date
)
end
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment