annotate test/unit/issue_status_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children 433d4f72a19b
rev   line source
Chris@909 1 # Redmine - project management software
Chris@909 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19
Chris@0 20 class IssueStatusTest < ActiveSupport::TestCase
Chris@245 21 fixtures :issue_statuses, :issues, :roles, :trackers
Chris@0 22
Chris@0 23 def test_create
Chris@0 24 status = IssueStatus.new :name => "Assigned"
Chris@0 25 assert !status.save
Chris@0 26 # status name uniqueness
Chris@0 27 assert_equal 1, status.errors.count
Chris@909 28
Chris@0 29 status.name = "Test Status"
Chris@0 30 assert status.save
Chris@0 31 assert !status.is_default
Chris@0 32 end
Chris@909 33
Chris@0 34 def test_destroy
Chris@0 35 status = IssueStatus.find(3)
Chris@1 36 assert_difference 'IssueStatus.count', -1 do
Chris@1 37 assert status.destroy
Chris@1 38 end
Chris@1 39 assert_nil Workflow.first(:conditions => {:old_status_id => status.id})
Chris@1 40 assert_nil Workflow.first(:conditions => {:new_status_id => status.id})
Chris@0 41 end
Chris@0 42
Chris@0 43 def test_destroy_status_in_use
Chris@0 44 # Status assigned to an Issue
Chris@0 45 status = Issue.find(1).status
Chris@0 46 assert_raise(RuntimeError, "Can't delete status") { status.destroy }
Chris@0 47 end
Chris@0 48
Chris@0 49 def test_default
Chris@0 50 status = IssueStatus.default
Chris@0 51 assert_kind_of IssueStatus, status
Chris@0 52 end
Chris@909 53
Chris@0 54 def test_change_default
Chris@0 55 status = IssueStatus.find(2)
Chris@0 56 assert !status.is_default
Chris@0 57 status.is_default = true
Chris@0 58 assert status.save
Chris@0 59 status.reload
Chris@909 60
Chris@0 61 assert_equal status, IssueStatus.default
Chris@0 62 assert !IssueStatus.find(1).is_default
Chris@0 63 end
Chris@909 64
Chris@0 65 def test_reorder_should_not_clear_default_status
Chris@0 66 status = IssueStatus.default
Chris@0 67 status.move_to_bottom
Chris@0 68 status.reload
Chris@0 69 assert status.is_default?
Chris@0 70 end
Chris@909 71
Chris@245 72 def test_new_statuses_allowed_to
Chris@245 73 Workflow.delete_all
Chris@909 74
Chris@245 75 Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false)
Chris@245 76 Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false)
Chris@245 77 Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true)
Chris@245 78 Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true)
Chris@245 79 status = IssueStatus.find(1)
Chris@245 80 role = Role.find(1)
Chris@245 81 tracker = Tracker.find(1)
Chris@245 82
Chris@245 83 assert_equal [2], status.new_statuses_allowed_to([role], tracker, false, false).map(&:id)
Chris@245 84 assert_equal [2], status.find_new_statuses_allowed_to([role], tracker, false, false).map(&:id)
Chris@909 85
Chris@909 86 assert_equal [2, 3, 5], status.new_statuses_allowed_to([role], tracker, true, false).map(&:id)
Chris@909 87 assert_equal [2, 3, 5], status.find_new_statuses_allowed_to([role], tracker, true, false).map(&:id)
Chris@909 88
Chris@909 89 assert_equal [2, 4, 5], status.new_statuses_allowed_to([role], tracker, false, true).map(&:id)
Chris@909 90 assert_equal [2, 4, 5], status.find_new_statuses_allowed_to([role], tracker, false, true).map(&:id)
Chris@909 91
Chris@245 92 assert_equal [2, 3, 4, 5], status.new_statuses_allowed_to([role], tracker, true, true).map(&:id)
Chris@245 93 assert_equal [2, 3, 4, 5], status.find_new_statuses_allowed_to([role], tracker, true, true).map(&:id)
Chris@245 94 end
Chris@0 95
Chris@0 96 context "#update_done_ratios" do
Chris@0 97 setup do
Chris@0 98 @issue = Issue.find(1)
Chris@0 99 @issue_status = IssueStatus.find(1)
Chris@0 100 @issue_status.update_attribute(:default_done_ratio, 50)
Chris@0 101 end
Chris@909 102
Chris@0 103 context "with Setting.issue_done_ratio using the issue_field" do
Chris@0 104 setup do
Chris@0 105 Setting.issue_done_ratio = 'issue_field'
Chris@0 106 end
Chris@909 107
Chris@0 108 should "change nothing" do
Chris@0 109 IssueStatus.update_issue_done_ratios
Chris@0 110
Chris@0 111 assert_equal 0, Issue.count(:conditions => {:done_ratio => 50})
Chris@0 112 end
Chris@0 113 end
Chris@0 114
Chris@0 115 context "with Setting.issue_done_ratio using the issue_status" do
Chris@0 116 setup do
Chris@0 117 Setting.issue_done_ratio = 'issue_status'
Chris@0 118 end
Chris@909 119
Chris@0 120 should "update all of the issue's done_ratios to match their Issue Status" do
Chris@0 121 IssueStatus.update_issue_done_ratios
Chris@909 122
Chris@0 123 issues = Issue.find([1,3,4,5,6,7,9,10])
Chris@0 124 issues.each do |issue|
Chris@0 125 assert_equal @issue_status, issue.status
Chris@0 126 assert_equal 50, issue.read_attribute(:done_ratio)
Chris@0 127 end
Chris@0 128 end
Chris@0 129 end
Chris@0 130 end
Chris@0 131 end