Project

General

Profile

Defect #37635 » 0001-Consider-only-roles-with-either-add_issues-or-edit_i.patch

Holger Just, 2022-09-01 20:49

View differences:

app/models/issue.rb
1064 1064
      (user.id == initial_assigned_to_id || user.group_ids.include?(initial_assigned_to_id))
1065 1065

  
1066 1066
    statuses = []
1067

  
1068
    roles = user.admin ? Role.all.to_a : user.roles_for_project(project)
1069
    roles = roles.select(&:consider_workflow?)
1067 1070
    statuses += IssueStatus.new_statuses_allowed(
1068 1071
      initial_status,
1069
      user.admin ? Role.all.to_a : user.roles_for_project(project),
1072
      roles,
1070 1073
      tracker,
1071 1074
      author == user,
1072 1075
      assignee_transitions_allowed
test/unit/issue_test.rb
859 859
    assert_equal expected_statuses, issue.new_statuses_allowed_to(admin)
860 860
  end
861 861

  
862
  def test_new_statuses_allowed_to_should_only_return_transitions_of_considered_workflows
863
    issue = Issue.find(9)
864

  
865
    WorkflowTransition.delete_all
866
    WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2)
867

  
868
    developer = Role.find(2)
869
    developer.remove_permission! :edit_issues
870
    developer.remove_permission! :add_issues
871
    assert !developer.consider_workflow?
872
    WorkflowTransition.create!(:role_id => 2, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3)
873

  
874
    # status 3 is not displayed
875
    expected_statuses = IssueStatus.where(:id => [1, 2])
876

  
877
    admin = User.find(1)
878
    assert_equal expected_statuses, issue.new_statuses_allowed_to(admin)
879

  
880
    author = User.find(8)
881
    assert_equal expected_statuses, issue.new_statuses_allowed_to(author)
882
  end
883

  
862 884
  def test_new_statuses_allowed_to_should_return_allowed_statuses_when_copying
863 885
    Tracker.find(1).generate_transitions! :role_id => 1, :clear => true, 0 => [1, 3]
864 886

  
(1-1/2)