@@ -756,12 +756,16 class Issue < ActiveRecord::Base | |||||
756 | initial_status = IssueStatus.find_by_id(status_id_was) |
|
756 | initial_status = IssueStatus.find_by_id(status_id_was) | |
757 | end |
|
757 | end | |
758 | initial_status ||= status |
|
758 | initial_status ||= status | |
759 |
|
759 | |||
|
760 | initial_assigned_to_id = assigned_to_id_changed? ? assigned_to_id_was : assigned_to_id | |||
|
761 | assignee_transitions_allowed = initial_assigned_to_id.present? && | |||
|
762 | (user.id == initial_assigned_to_id || user.group_ids.include?(initial_assigned_to_id)) | |||
|
763 | ||||
760 | statuses = initial_status.find_new_statuses_allowed_to( |
|
764 | statuses = initial_status.find_new_statuses_allowed_to( | |
761 | user.admin ? Role.all : user.roles_for_project(project), |
|
765 | user.admin ? Role.all : user.roles_for_project(project), | |
762 | tracker, |
|
766 | tracker, | |
763 | author == user, |
|
767 | author == user, | |
764 | assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id |
|
768 | assignee_transitions_allowed | |
765 | ) |
|
769 | ) | |
766 | statuses << initial_status unless statuses.empty? |
|
770 | statuses << initial_status unless statuses.empty? | |
767 | statuses << IssueStatus.default if include_default |
|
771 | statuses << IssueStatus.default if include_default |
@@ -509,9 +509,9 class IssueTest < ActiveSupport::TestCase | |||||
509 | WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, |
|
509 | WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, | |
510 | :old_status_id => 1, :new_status_id => 3, |
|
510 | :old_status_id => 1, :new_status_id => 3, | |
511 | :author => true, :assignee => false) |
|
511 | :author => true, :assignee => false) | |
512 |
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, |
|
512 | WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, | |
513 |
:new_status_id => 4, |
|
513 | :old_status_id => 1, :new_status_id => 4, | |
514 | :assignee => true) |
|
514 | :author => false, :assignee => true) | |
515 | WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, |
|
515 | WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, | |
516 | :old_status_id => 1, :new_status_id => 5, |
|
516 | :old_status_id => 1, :new_status_id => 5, | |
517 | :author => true, :assignee => true) |
|
517 | :author => true, :assignee => true) | |
@@ -537,6 +537,26 class IssueTest < ActiveSupport::TestCase | |||||
537 | :project_id => 1, :author => user, |
|
537 | :project_id => 1, :author => user, | |
538 | :assigned_to => user) |
|
538 | :assigned_to => user) | |
539 | assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) |
|
539 | assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) | |
|
540 | ||||
|
541 | group = Group.generate! | |||
|
542 | group.users << user | |||
|
543 | issue = Issue.generate!(:tracker => tracker, :status => status, | |||
|
544 | :project_id => 1, :author => user, | |||
|
545 | :assigned_to => group) | |||
|
546 | assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) | |||
|
547 | end | |||
|
548 | ||||
|
549 | def test_new_statuses_allowed_to_should_consider_group_assignment | |||
|
550 | WorkflowTransition.delete_all | |||
|
551 | WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, | |||
|
552 | :old_status_id => 1, :new_status_id => 4, | |||
|
553 | :author => false, :assignee => true) | |||
|
554 | user = User.find(2) | |||
|
555 | group = Group.generate! | |||
|
556 | group.users << user | |||
|
557 | ||||
|
558 | issue = Issue.generate!(:author_id => 1, :assigned_to => group) | |||
|
559 | assert_include 4, issue.new_statuses_allowed_to(user).map(&:id) | |||
540 | end |
|
560 | end | |
541 |
|
561 | |||
542 | def test_new_statuses_allowed_to_should_return_all_transitions_for_admin |
|
562 | def test_new_statuses_allowed_to_should_return_all_transitions_for_admin |
General Comments 0
You need to be logged in to leave comments.
Login now