diff test/unit/.svn/text-base/issue_status_test.rb.svn-base @ 0:513646585e45

* Import Redmine trunk SVN rev 3859
author Chris Cannam
date Fri, 23 Jul 2010 15:52:44 +0100
parents
children cca12e1c1fd4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/.svn/text-base/issue_status_test.rb.svn-base	Fri Jul 23 15:52:44 2010 +0100
@@ -0,0 +1,105 @@
+# redMine - project management software
+# Copyright (C) 2006-2007  Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class IssueStatusTest < ActiveSupport::TestCase
+  fixtures :issue_statuses, :issues
+
+  def test_create
+    status = IssueStatus.new :name => "Assigned"
+    assert !status.save
+    # status name uniqueness
+    assert_equal 1, status.errors.count
+    
+    status.name = "Test Status"
+    assert status.save
+    assert !status.is_default
+  end
+  
+  def test_destroy
+    count_before = IssueStatus.count
+    status = IssueStatus.find(3)
+    assert status.destroy
+    assert_equal count_before - 1, IssueStatus.count
+  end
+
+  def test_destroy_status_in_use
+    # Status assigned to an Issue
+    status = Issue.find(1).status
+    assert_raise(RuntimeError, "Can't delete status") { status.destroy }
+  end
+
+  def test_default
+    status = IssueStatus.default
+    assert_kind_of IssueStatus, status
+  end
+  
+  def test_change_default
+    status = IssueStatus.find(2)
+    assert !status.is_default
+    status.is_default = true
+    assert status.save
+    status.reload
+    
+    assert_equal status, IssueStatus.default
+    assert !IssueStatus.find(1).is_default
+  end
+  
+  def test_reorder_should_not_clear_default_status
+    status = IssueStatus.default
+    status.move_to_bottom
+    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