Defect #15957 ยป percent_done_in_parent_issues.diff
| app/models/issue.rb | ||
|---|---|---|
| 1355 | 1355 |
unless Issue.use_status_for_done_ratio? && p.status && p.status.default_done_ratio |
| 1356 | 1356 |
leaves_count = p.leaves.count |
| 1357 | 1357 |
if leaves_count > 0 |
| 1358 |
average = p.leaves.average(:estimated_hours).to_f
|
|
| 1358 |
average = p.leaves.average("CASE WHEN estimated_hours > 0 THEN estimated_hours ELSE NULL END").to_f
|
|
| 1359 | 1359 |
if average == 0 |
| 1360 | 1360 |
average = 1 |
| 1361 | 1361 |
end |
| test/unit/issue_nested_set_test.rb | ||
|---|---|---|
| 338 | 338 |
def test_parent_done_ratio_with_child_estimate_to_0_should_reach_100 |
| 339 | 339 |
parent = Issue.generate! |
| 340 | 340 |
issue1 = Issue.generate!(:parent_issue_id => parent.id) |
| 341 |
issue2 = Issue.generate!(:parent_issue_id => parent.id, :estimated_hours => 0) |
|
| 341 |
issue2 = Issue.generate!(:parent_issue_id => parent.id, :estimated_hours => 10) |
|
| 342 |
issue3 = Issue.generate!(:parent_issue_id => parent.id, :estimated_hours => 0) |
|
| 342 | 343 |
assert_equal 0, parent.reload.done_ratio |
| 343 | 344 |
issue1.reload.update_attribute :status_id, 5 |
| 344 |
assert_equal 50, parent.reload.done_ratio
|
|
| 345 |
assert_equal 33, parent.reload.done_ratio
|
|
| 345 | 346 |
issue2.reload.update_attribute :status_id, 5 |
| 347 |
assert_equal 67, parent.reload.done_ratio |
|
| 348 |
issue3.reload.update_attribute :status_id, 5 |
|
| 346 | 349 |
assert_equal 100, parent.reload.done_ratio |
| 347 | 350 |
end |