summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/unit/issue_nested_set_test.rb34
-rw-r--r--test/unit/issue_subtasking_test.rb64
2 files changed, 64 insertions, 34 deletions
diff --git a/test/unit/issue_nested_set_test.rb b/test/unit/issue_nested_set_test.rb
index 632464872..3404163ad 100644
--- a/test/unit/issue_nested_set_test.rb
+++ b/test/unit/issue_nested_set_test.rb
@@ -287,40 +287,6 @@ class IssueNestedSetTest < ActiveSupport::TestCase
end
end
- def test_parent_done_ratio_should_be_average_done_ratio_of_leaves
- parent = Issue.generate!
- parent.generate_child!(:done_ratio => 20)
- assert_equal 20, parent.reload.done_ratio
- parent.generate_child!(:done_ratio => 70)
- assert_equal 45, parent.reload.done_ratio
-
- child = parent.generate_child!(:done_ratio => 0)
- assert_equal 30, parent.reload.done_ratio
-
- child.generate_child!(:done_ratio => 30)
- assert_equal 30, child.reload.done_ratio
- assert_equal 40, parent.reload.done_ratio
- end
-
- def test_parent_done_ratio_should_be_weighted_by_estimated_times_if_any
- parent = Issue.generate!
- parent.generate_child!(:estimated_hours => 10, :done_ratio => 20)
- assert_equal 20, parent.reload.done_ratio
- parent.generate_child!(:estimated_hours => 20, :done_ratio => 50)
- assert_equal (50 * 20 + 20 * 10) / 30, parent.reload.done_ratio
- end
-
- def test_parent_done_ratio_with_child_estimate_to_0_should_reach_100
- parent = Issue.generate!
- issue1 = parent.generate_child!
- issue2 = parent.generate_child!(:estimated_hours => 0)
- assert_equal 0, parent.reload.done_ratio
- issue1.reload.close!
- assert_equal 50, parent.reload.done_ratio
- issue2.reload.close!
- assert_equal 100, parent.reload.done_ratio
- end
-
def test_parent_estimate_should_be_sum_of_leaves
parent = Issue.generate!
parent.generate_child!(:estimated_hours => nil)
diff --git a/test/unit/issue_subtasking_test.rb b/test/unit/issue_subtasking_test.rb
index 621af178a..9005ac10e 100644
--- a/test/unit/issue_subtasking_test.rb
+++ b/test/unit/issue_subtasking_test.rb
@@ -97,6 +97,54 @@ class IssueSubtaskingTest < ActiveSupport::TestCase
end
end
+ def test_parent_done_ratio_should_be_read_only_with_parent_issue_done_ratio_set_to_derived
+ with_settings :parent_issue_done_ratio => 'derived' do
+ issue = Issue.generate_with_child!
+ user = User.find(1)
+ assert !issue.safe_attribute?('done_ratio', user)
+ end
+ end
+
+ def test_parent_done_ratio_should_be_average_done_ratio_of_leaves
+ with_settings :parent_issue_done_ratio => 'derived' do
+ parent = Issue.generate!
+ parent.generate_child!(:done_ratio => 20)
+ assert_equal 20, parent.reload.done_ratio
+ parent.generate_child!(:done_ratio => 70)
+ assert_equal 45, parent.reload.done_ratio
+
+ child = parent.generate_child!(:done_ratio => 0)
+ assert_equal 30, parent.reload.done_ratio
+
+ child.generate_child!(:done_ratio => 30)
+ assert_equal 30, child.reload.done_ratio
+ assert_equal 40, parent.reload.done_ratio
+ end
+ end
+
+ def test_parent_done_ratio_should_be_weighted_by_estimated_times_if_any
+ with_settings :parent_issue_done_ratio => 'derived' do
+ parent = Issue.generate!
+ parent.generate_child!(:estimated_hours => 10, :done_ratio => 20)
+ assert_equal 20, parent.reload.done_ratio
+ parent.generate_child!(:estimated_hours => 20, :done_ratio => 50)
+ assert_equal (50 * 20 + 20 * 10) / 30, parent.reload.done_ratio
+ end
+ end
+
+ def test_parent_done_ratio_with_child_estimate_to_0_should_reach_100
+ with_settings :parent_issue_done_ratio => 'derived' do
+ parent = Issue.generate!
+ issue1 = parent.generate_child!
+ issue2 = parent.generate_child!(:estimated_hours => 0)
+ assert_equal 0, parent.reload.done_ratio
+ issue1.reload.close!
+ assert_equal 50, parent.reload.done_ratio
+ issue2.reload.close!
+ assert_equal 100, parent.reload.done_ratio
+ end
+ end
+
def test_parent_dates_should_be_editable_with_parent_issue_dates_set_to_independent
with_settings :parent_issue_dates => 'independent' do
issue = Issue.generate_with_child!
@@ -143,4 +191,20 @@ class IssueSubtaskingTest < ActiveSupport::TestCase
assert_equal 'Normal', parent.reload.priority.name
end
end
+
+ def test_parent_done_ratio_should_be_editable_with_parent_issue_done_ratio_set_to_independent
+ with_settings :parent_issue_done_ratio => 'independent' do
+ issue = Issue.generate_with_child!
+ user = User.find(1)
+ assert issue.safe_attribute?('done_ratio', user)
+ end
+ end
+
+ def test_parent_done_ratio_should_not_be_updated_with_parent_issue_done_ratio_set_to_independent
+ with_settings :parent_issue_done_ratio => 'independent' do
+ parent = Issue.generate!(:done_ratio => 0)
+ child1 = parent.generate_child!(:done_ratio => 10)
+ assert_equal 0, parent.reload.done_ratio
+ end
+ end
end