diff options
author | Go MAEDA <maeda@farend.jp> | 2020-06-14 07:00:46 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2020-06-14 07:00:46 +0000 |
commit | 61532dde0487f4eb6231824091138fdbeb75593a (patch) | |
tree | f99125b98e8c224256b01ee5c586c15fcc246846 | |
parent | 7b5e8c0998c4d244d8f5348f3c1d4cb6b56cf076 (diff) | |
download | redmine-61532dde0487f4eb6231824091138fdbeb75593a.tar.gz redmine-61532dde0487f4eb6231824091138fdbeb75593a.zip |
Merged r19818 from trunk to 4.0-stable (#33576).
git-svn-id: http://svn.redmine.org/redmine/branches/4.0-stable@19820 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/issue.rb | 6 | ||||
-rw-r--r-- | test/unit/issue_subtasking_test.rb | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb index efd2789ed..dad03e39b 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1697,12 +1697,12 @@ class Issue < ActiveRecord::Base if children.any? child_with_total_estimated_hours = children.select {|c| c.total_estimated_hours.to_f > 0.0} if child_with_total_estimated_hours.any? - average = child_with_total_estimated_hours.map(&:total_estimated_hours).sum.to_f / child_with_total_estimated_hours.count + average = child_with_total_estimated_hours.map(&:total_estimated_hours).sum.to_d / child_with_total_estimated_hours.count else - average = 1.0 + average = 1.0.to_d end done = children.map {|c| - estimated = c.total_estimated_hours.to_f + estimated = (c.total_estimated_hours || 0.0).to_d estimated = average unless estimated > 0.0 ratio = c.closed? ? 100 : (c.done_ratio || 0) estimated * ratio diff --git a/test/unit/issue_subtasking_test.rb b/test/unit/issue_subtasking_test.rb index 6ad720d33..4a5c21de5 100644 --- a/test/unit/issue_subtasking_test.rb +++ b/test/unit/issue_subtasking_test.rb @@ -239,6 +239,16 @@ class IssueSubtaskingTest < ActiveSupport::TestCase end end + def test_done_ratio_of_parent_with_completed_children_should_not_be_99 + with_settings :parent_issue_done_ratio => 'derived' do + parent = Issue.generate! + parent.generate_child!(:estimated_hours => 8.0, :done_ratio => 100) + parent.generate_child!(:estimated_hours => 8.1, :done_ratio => 100) + # (8.0 * 100 + 8.1 * 100) / (8.0 + 8.1) => 99.99999999999999 + assert_equal 100, parent.reload.done_ratio + end + end + def test_changing_parent_should_update_previous_parent_done_ratio with_settings :parent_issue_done_ratio => 'derived' do first_parent = Issue.generate! |