]> source.dussan.org Git - redmine.git/commitdiff
Merged r19818 from trunk to 4.0-stable (#33576).
authorGo MAEDA <maeda@farend.jp>
Sun, 14 Jun 2020 07:00:46 +0000 (07:00 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 14 Jun 2020 07:00:46 +0000 (07:00 +0000)
git-svn-id: http://svn.redmine.org/redmine/branches/4.0-stable@19820 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
test/unit/issue_subtasking_test.rb

index efd2789ede7d38d7f99aaa0efbdd208d022f9b8c..dad03e39b6560b1ddd77d30601a0b24208ba4339 100644 (file)
@@ -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
index 6ad720d33feff5a1a32e7d61220b01d0c56ef120..4a5c21de5eb2797e3ad4aee5868685a8a49a2117 100644 (file)
@@ -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!