diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/unit/issue_nested_set_test.rb | 34 | ||||
-rw-r--r-- | test/unit/issue_subtasking_test.rb | 64 |
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 |