Commit 561693ad authored by George Andrinopoulos's avatar George Andrinopoulos

Move total time spend calculation to milestoneish

parent 2f9c23eb
......@@ -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)
......
......@@ -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
......@@ -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
......
......@@ -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
......
......@@ -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
......@@ -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
......@@ -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
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