summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2009-12-11 18:48:34 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2009-12-11 18:48:34 +0000
commit4fe14e71c2d76a2e92da0aaa71e18493d65b1fc1 (patch)
tree0ef000f0e3985772228928b0acdca1a292f82ef6 /test
parenta83501364d0aa5e5e6d7a9e4ccfa2be5dab555b0 (diff)
downloadredmine-4fe14e71c2d76a2e92da0aaa71e18493d65b1fc1.tar.gz
redmine-4fe14e71c2d76a2e92da0aaa71e18493d65b1fc1.zip
Adds a Setting to control how an Issue's done_ratio is calculated:
* Issue field (default) - the done_ratio field for the Issue * Issue status - uses the Issue Status's value #4274 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3151 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/functional/issue_statuses_controller_test.rb23
-rw-r--r--test/unit/issue_status_test.rb36
-rw-r--r--test/unit/issue_test.rb60
3 files changed, 119 insertions, 0 deletions
diff --git a/test/functional/issue_statuses_controller_test.rb b/test/functional/issue_statuses_controller_test.rb
index 5e012f7f4..4f88433bd 100644
--- a/test/functional/issue_statuses_controller_test.rb
+++ b/test/functional/issue_statuses_controller_test.rb
@@ -70,4 +70,27 @@ class IssueStatusesControllerTest < ActionController::TestCase
assert_redirected_to 'issue_statuses/list'
assert_not_nil IssueStatus.find_by_id(1)
end
+
+ context "on POST to :update_issue_done_ratio" do
+ context "with Setting.issue_done_ratio using the issue_field" do
+ setup do
+ Setting.issue_done_ratio = 'issue_field'
+ post :update_issue_done_ratio
+ end
+
+ should_set_the_flash_to /not updated/
+ should_redirect_to('the list') { '/issue_statuses/list' }
+ end
+
+ context "with Setting.issue_done_ratio using the issue_status" do
+ setup do
+ Setting.issue_done_ratio = 'issue_status'
+ post :update_issue_done_ratio
+ end
+
+ should_set_the_flash_to /Issue done ratios updated/
+ should_redirect_to('the list') { '/issue_statuses/list' }
+ end
+ end
+
end
diff --git a/test/unit/issue_status_test.rb b/test/unit/issue_status_test.rb
index 042f30e32..2c0685cec 100644
--- a/test/unit/issue_status_test.rb
+++ b/test/unit/issue_status_test.rb
@@ -66,4 +66,40 @@ class IssueStatusTest < ActiveSupport::TestCase
status.reload
assert status.is_default?
end
+
+ context "#update_done_ratios" do
+ setup do
+ @issue = Issue.find(1)
+ @issue_status = IssueStatus.find(1)
+ @issue_status.update_attribute(:default_done_ratio, 50)
+ end
+
+ context "with Setting.issue_done_ratio using the issue_field" do
+ setup do
+ Setting.issue_done_ratio = 'issue_field'
+ end
+
+ should "change nothing" do
+ IssueStatus.update_issue_done_ratios
+
+ assert_equal 0, Issue.count(:conditions => {:done_ratio => 50})
+ end
+ end
+
+ context "with Setting.issue_done_ratio using the issue_status" do
+ setup do
+ Setting.issue_done_ratio = 'issue_status'
+ end
+
+ should "update all of the issue's done_ratios to match their Issue Status" do
+ IssueStatus.update_issue_done_ratios
+
+ issues = Issue.find([1,3,4,5,6,7,9,10])
+ issues.each do |issue|
+ assert_equal @issue_status, issue.status
+ assert_equal 50, issue.read_attribute(:done_ratio)
+ end
+ end
+ end
+ end
end
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index e91880c08..fa9d56dbd 100644
--- a/test/unit/issue_test.rb
+++ b/test/unit/issue_test.rb
@@ -529,4 +529,64 @@ class IssueTest < ActiveSupport::TestCase
end
assert ActionMailer::Base.deliveries.empty?
end
+
+ context "#done_ratio" do
+ setup do
+ @issue = Issue.find(1)
+ @issue_status = IssueStatus.find(1)
+ @issue_status.update_attribute(:default_done_ratio, 50)
+ end
+
+ context "with Setting.issue_done_ratio using the issue_field" do
+ setup do
+ Setting.issue_done_ratio = 'issue_field'
+ end
+
+ should "read the issue's field" do
+ assert_equal 0, @issue.done_ratio
+ end
+ end
+
+ context "with Setting.issue_done_ratio using the issue_status" do
+ setup do
+ Setting.issue_done_ratio = 'issue_status'
+ end
+
+ should "read the Issue Status's default done ratio" do
+ assert_equal 50, @issue.done_ratio
+ end
+ end
+ end
+
+ context "#update_done_ratio_from_issue_status" do
+ setup do
+ @issue = Issue.find(1)
+ @issue_status = IssueStatus.find(1)
+ @issue_status.update_attribute(:default_done_ratio, 50)
+ end
+
+ context "with Setting.issue_done_ratio using the issue_field" do
+ setup do
+ Setting.issue_done_ratio = 'issue_field'
+ end
+
+ should "not change the issue" do
+ @issue.update_done_ratio_from_issue_status
+
+ assert_equal 0, @issue.done_ratio
+ end
+ end
+
+ context "with Setting.issue_done_ratio using the issue_status" do
+ setup do
+ Setting.issue_done_ratio = 'issue_status'
+ end
+
+ should "not change the issue's done ratio" do
+ @issue.update_done_ratio_from_issue_status
+
+ assert_equal 50, @issue.done_ratio
+ end
+ end
+ end
end