summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Andrinopoulos <geoandri@gmail.com>2017-11-06 20:18:20 +0200
committerWinnie Hellmann <winnie@gitlab.com>2017-11-13 15:04:11 +0100
commitd27da27b8f39ae21ed412d22ec5576699997dd2f (patch)
treebe0cdddb01ae29907993d62e11fd9bbc8c1b3e06
parentd2fe9f2b9a7a465834dab13199ae675ca9686541 (diff)
downloadgitlab-ce-d27da27b8f39ae21ed412d22ec5576699997dd2f.tar.gz
Move total time spend calculation to milestoneish
-rw-r--r--app/models/concerns/milestoneish.rb8
-rw-r--r--app/models/global_milestone.rb8
-rw-r--r--app/models/milestone.rb8
-rw-r--r--app/views/shared/milestones/_sidebar.html.haml10
-rw-r--r--spec/models/concerns/milestoneish_spec.rb11
-rw-r--r--spec/models/global_milestone_spec.rb33
-rw-r--r--spec/models/milestone_spec.rb23
7 files changed, 24 insertions, 77 deletions
diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb
index 710fc1ed647..7fe55f8402f 100644
--- a/app/models/concerns/milestoneish.rb
+++ b/app/models/concerns/milestoneish.rb
@@ -86,6 +86,14 @@ module Milestoneish
false
end
+ def total_issue_time_spent
+ issues.joins(:timelogs).sum(:time_spent)
+ end
+
+ def human_total_issue_time_spent
+ Gitlab::TimeTrackingFormatter.output(total_issue_time_spent)
+ end
+
private
def count_issues_by_state(user)
diff --git a/app/models/global_milestone.rb b/app/models/global_milestone.rb
index 18af3c41d61..c0864769314 100644
--- a/app/models/global_milestone.rb
+++ b/app/models/global_milestone.rb
@@ -152,12 +152,4 @@ class GlobalMilestone
@milestones.first.start_date
end
end
-
- def total_time_spent
- issues.joins(:timelogs).sum(:time_spent) + merge_requests.joins(:timelogs).sum(:time_spent)
- end
-
- def human_total_time_spent
- Gitlab::TimeTrackingFormatter.output(total_time_spent)
- end
end
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index fa2dfcb694b..47e6b785c39 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -213,14 +213,6 @@ class Milestone < ActiveRecord::Base
project_id.present?
end
- def total_time_spent
- issues.joins(:timelogs).sum(:time_spent) + merge_requests.joins(:timelogs).sum(:time_spent)
- end
-
- def human_total_time_spent
- Gitlab::TimeTrackingFormatter.output(total_time_spent)
- end
-
private
# Milestone titles must be unique across project milestones and group milestones
diff --git a/app/views/shared/milestones/_sidebar.html.haml b/app/views/shared/milestones/_sidebar.html.haml
index e244adf7d52..d396e80e12c 100644
--- a/app/views/shared/milestones/_sidebar.html.haml
+++ b/app/views/shared/milestones/_sidebar.html.haml
@@ -89,15 +89,15 @@
.sidebar-collapsed-icon
= custom_icon('icon_hourglass')
%span.collapsed-milestone-total-time-spent
- - if milestone.human_total_time_spent
- = milestone.human_total_time_spent
+ - if milestone.human_total_issue_time_spent
+ = milestone.human_total_issue_time_spent
- else
None
.title.hide-collapsed
- Total time spent
+ Total issue time spent
.value.hide-collapsed
- - if milestone.human_total_time_spent
- %span.bold= milestone.human_total_time_spent
+ - if milestone.human_total_issue_time_spent
+ %span.bold= milestone.human_total_issue_time_spent
- else
%span.no-value No time spent
diff --git a/spec/models/concerns/milestoneish_spec.rb b/spec/models/concerns/milestoneish_spec.rb
index 66353935427..c0a51e170fc 100644
--- a/spec/models/concerns/milestoneish_spec.rb
+++ b/spec/models/concerns/milestoneish_spec.rb
@@ -186,4 +186,15 @@ describe Milestone, 'Milestoneish' do
expect(milestone.elapsed_days).to eq(2)
end
end
+
+ describe '#total_issue_time_spent' do
+ it 'calculates total issue time spent' do
+ closed_issue_1.spend_time(duration: 300, user: author)
+ closed_issue_1.save!
+ closed_issue_2.spend_time(duration: 600, user: assignee)
+ closed_issue_2.save!
+
+ expect(milestone.total_issue_time_spent).to eq(900)
+ end
+ end
end
diff --git a/spec/models/global_milestone_spec.rb b/spec/models/global_milestone_spec.rb
index 4874dcbd58e..ab58f5c5021 100644
--- a/spec/models/global_milestone_spec.rb
+++ b/spec/models/global_milestone_spec.rb
@@ -190,37 +190,4 @@ describe GlobalMilestone do
end
end
end
-
- describe '#total_time_spent' do
- let(:milestone1_project1) { create(:milestone, title: "Milestone v1.2", project: project1) }
- let(:milestone1_project2) { create(:milestone, title: "Milestone v1.2", project: project2) }
- let(:issue1) { create(:issue, milestone: milestone1_project1) }
- let(:issue2) { create(:issue, milestone: milestone1_project2) }
- let(:merge_request1) { create(:merge_request, milestone: milestone1_project1) }
- let(:merge_request2) { create(:merge_request, milestone: milestone1_project2) }
-
- before do
- milestones =
- [
- milestone1_project1,
- milestone1_project2
- ]
- milestones_relation = Milestone.where(id: milestones.map(&:id))
-
- @global_milestone = described_class.new(milestone1_project1.title, milestones_relation)
- end
-
- it 'calculates total time spent' do
- issue1.spend_time(duration: 300, user: user)
- issue1.save!
- issue2.spend_time(duration: 600, user: user2)
- issue2.save!
- merge_request1.spend_time(duration: 200, user: user)
- merge_request1.save!
- merge_request2.spend_time(duration: 100, user: user2)
- merge_request2.save!
-
- expect(@global_milestone.total_time_spent).to eq(1200)
- end
- end
end
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index 10c24317574..13e37fffa4e 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -284,27 +284,4 @@ describe Milestone do
expect(milestone.participants).to eq [user]
end
end
-
- describe '#total_time_spent' do
- let(:user) { build(:user) }
- let(:project) { build(:project, name: 'sample-project') }
- let(:milestone) { build(:milestone, iid: 1, project: project) }
- let(:issue1) { build(:issue, milestone: milestone) }
- let(:issue2) { build(:issue, milestone: milestone) }
- let(:merge_request1) { build(:merge_request, milestone: milestone) }
- let(:merge_request2) { build(:merge_request, milestone: milestone) }
-
- it 'calculates total time spent' do
- issue1.spend_time(duration: 300, user: user)
- issue1.save!
- issue2.spend_time(duration: 600, user: user)
- issue2.save!
- merge_request1.spend_time(duration: 200, user: user)
- merge_request1.save!
- merge_request2.spend_time(duration: 100, user: user)
- merge_request2.save!
-
- expect(milestone.total_time_spent).to eq(1200)
- end
- end
end