Merged r12056 from trunk (#14447).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.3-stable@12064 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
591922c365
commit
e8757fec2b
|
@ -744,12 +744,16 @@ class Issue < ActiveRecord::Base
|
||||||
initial_status = IssueStatus.find_by_id(status_id_was)
|
initial_status = IssueStatus.find_by_id(status_id_was)
|
||||||
end
|
end
|
||||||
initial_status ||= status
|
initial_status ||= status
|
||||||
|
|
||||||
|
initial_assigned_to_id = assigned_to_id_changed? ? assigned_to_id_was : assigned_to_id
|
||||||
|
assignee_transitions_allowed = initial_assigned_to_id.present? &&
|
||||||
|
(user.id == initial_assigned_to_id || user.group_ids.include?(initial_assigned_to_id))
|
||||||
|
|
||||||
statuses = initial_status.find_new_statuses_allowed_to(
|
statuses = initial_status.find_new_statuses_allowed_to(
|
||||||
user.admin ? Role.all : user.roles_for_project(project),
|
user.admin ? Role.all : user.roles_for_project(project),
|
||||||
tracker,
|
tracker,
|
||||||
author == user,
|
author == user,
|
||||||
assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id
|
assignee_transitions_allowed
|
||||||
)
|
)
|
||||||
statuses << initial_status unless statuses.empty?
|
statuses << initial_status unless statuses.empty?
|
||||||
statuses << IssueStatus.default if include_default
|
statuses << IssueStatus.default if include_default
|
||||||
|
|
|
@ -488,9 +488,9 @@ class IssueTest < ActiveSupport::TestCase
|
||||||
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
|
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
|
||||||
:old_status_id => 1, :new_status_id => 3,
|
:old_status_id => 1, :new_status_id => 3,
|
||||||
:author => true, :assignee => false)
|
:author => true, :assignee => false)
|
||||||
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1,
|
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
|
||||||
:new_status_id => 4, :author => false,
|
:old_status_id => 1, :new_status_id => 4,
|
||||||
:assignee => true)
|
:author => false, :assignee => true)
|
||||||
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
|
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
|
||||||
:old_status_id => 1, :new_status_id => 5,
|
:old_status_id => 1, :new_status_id => 5,
|
||||||
:author => true, :assignee => true)
|
:author => true, :assignee => true)
|
||||||
|
@ -516,6 +516,26 @@ class IssueTest < ActiveSupport::TestCase
|
||||||
:project_id => 1, :author => user,
|
:project_id => 1, :author => user,
|
||||||
:assigned_to => user)
|
:assigned_to => user)
|
||||||
assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
|
assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
|
||||||
|
|
||||||
|
group = Group.generate!
|
||||||
|
group.users << user
|
||||||
|
issue = Issue.generate!(:tracker => tracker, :status => status,
|
||||||
|
:project_id => 1, :author => user,
|
||||||
|
:assigned_to => group)
|
||||||
|
assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_new_statuses_allowed_to_should_consider_group_assignment
|
||||||
|
WorkflowTransition.delete_all
|
||||||
|
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1,
|
||||||
|
:old_status_id => 1, :new_status_id => 4,
|
||||||
|
:author => false, :assignee => true)
|
||||||
|
user = User.find(2)
|
||||||
|
group = Group.generate!
|
||||||
|
group.users << user
|
||||||
|
|
||||||
|
issue = Issue.generate!(:author_id => 1, :assigned_to => group)
|
||||||
|
assert_include 4, issue.new_statuses_allowed_to(user).map(&:id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_new_statuses_allowed_to_should_return_all_transitions_for_admin
|
def test_new_statuses_allowed_to_should_return_all_transitions_for_admin
|
||||||
|
|
Loading…
Reference in New Issue