]> source.dussan.org Git - redmine.git/commitdiff
Makes all workflow transitions defined for all roles available to administrators...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 26 Jan 2012 20:30:47 +0000 (20:30 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 26 Jan 2012 20:30:47 +0000 (20:30 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8707 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
test/unit/issue_test.rb

index 2b9b12b778fa3b5c6b40cf03d012122860c64d12..d20cff35d8e256dc4330dfa832557b0d924fa844 100644 (file)
@@ -503,7 +503,7 @@ class Issue < ActiveRecord::Base
   # Returns an array of status that user is able to apply
   def new_statuses_allowed_to(user, include_default=false)
     statuses = status.find_new_statuses_allowed_to(
-      user.roles_for_project(project),
+      user.admin ? Role.all : user.roles_for_project(project),
       tracker,
       author == user,
       assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id
index ee56ffe74384e5ba3597c978b7fb01cf478136ff..b4ba86e493b2b80bdb72d97d3405e5f991df9825 100644 (file)
@@ -387,6 +387,15 @@ class IssueTest < ActiveSupport::TestCase
     assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
   end
 
+  def test_new_statuses_allowed_to_should_return_all_transitions_for_admin
+    admin = User.find(1)
+    issue = Issue.find(1)
+    assert !admin.member_of?(issue.project)
+    expected_statuses = [issue.status] + Workflow.find_all_by_old_status_id(issue.status_id).map(&:new_status).uniq.sort
+
+    assert_equal expected_statuses, issue.new_statuses_allowed_to(admin)
+  end
+
   def test_copy
     issue = Issue.new.copy_from(1)
     assert issue.copy?