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

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

index 713acdfe21ac2f13e2accfa2b57b2794c415d9fb..b5222513747513393630b86a4e55db0d5859c873 100644 (file)
@@ -1707,12 +1707,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 3deb9561e6ecadb7318b31c6a2c27b28dab7e5e1..b946de211995f56c4ca228e132ae8f4ad28a837e 100644 (file)
@@ -241,6 +241,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!