Defect #24457 » 0001-Version-progress-should.patch
app/models/version.rb | ||
---|---|---|
78 | 78 |
# Used to weight unestimated issues in progress calculation |
79 | 79 |
def estimated_average |
80 | 80 |
if @estimated_average.nil? |
81 |
average = average(:estimated_hours).to_f |
|
82 |
if average == 0 |
|
83 |
average = 1 |
|
81 |
issues_with_total_estimated_hours = select {|c| c.total_estimated_hours.to_f > 0.0} |
|
82 |
if issues_with_total_estimated_hours.any? |
|
83 |
average = issues_with_total_estimated_hours.map(&:total_estimated_hours).sum.to_f / issues_with_total_estimated_hours.count |
|
84 |
else |
|
85 |
average = 1.0 |
|
84 | 86 |
end |
85 | 87 |
@estimated_average = average |
86 | 88 |
end |
... | ... | |
98 | 100 |
@issues_progress[open] ||= begin |
99 | 101 |
progress = 0 |
100 | 102 |
if count > 0 |
101 |
ratio = open ? 'done_ratio' : 100 |
|
102 | ||
103 |
done = open(open).sum("COALESCE(estimated_hours, #{estimated_average}) * #{ratio}").to_f |
|
103 |
done = open(open).map {|c| |
|
104 |
estimated = c.total_estimated_hours.to_f |
|
105 |
estimated = estimated_average unless estimated > 0.0 |
|
106 |
ratio = c.closed? ? 100 : (c.done_ratio || 0) |
|
107 |
estimated * ratio |
|
108 |
}.sum |
|
104 | 109 |
progress = done / (estimated_average * count) |
105 | 110 |
end |
106 | 111 |
progress |
test/unit/version_test.rb | ||
---|---|---|
116 | 116 |
assert_progress_equal (100.0)/3, v.closed_percent |
117 | 117 |
end |
118 | 118 | |
119 |
def test_progress_should_consider_closed_issues_with_0h_estimated_as_completed |
|
120 |
project = Project.find(1) |
|
121 |
closed = IssueStatus.where(:is_closed => true).first |
|
122 |
v = Version.create!(:project => project, :name => 'Progress') |
|
123 |
add_issue(v, :done_ratio => 100, :estimated_hours => 0) |
|
124 |
add_issue(v, :done_ratio => 100, :estimated_hours => 0, :status => closed) |
|
125 |
assert_progress_equal 100, v.completed_percent |
|
126 |
assert_progress_equal 50, v.closed_percent |
|
127 |
end |
|
128 | ||
119 | 129 |
def test_progress_should_consider_estimated_hours_to_weight_issues |
120 | 130 |
project = Project.find(1) |
121 | 131 |
v = Version.create!(:project => project, :name => 'Progress') |
- « Previous
- 1
- 2
- Next »