diff options
author | Go MAEDA <maeda@farend.jp> | 2022-09-17 07:58:12 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2022-09-17 07:58:12 +0000 |
commit | ab2b130e3c3de6b861264a01ccdb6c90a3d7e5d6 (patch) | |
tree | 3cab7489c9c78d3749756eba46d8c9d7aedf7fb5 | |
parent | d4b7634cc6c8f992a2d466c0302eebb7ccbd30a8 (diff) | |
download | redmine-ab2b130e3c3de6b861264a01ccdb6c90a3d7e5d6.tar.gz redmine-ab2b130e3c3de6b861264a01ccdb6c90a3d7e5d6.zip |
Ignore statuses if workflow only defines identity transition (#37636).
Patch by Holger Just.
git-svn-id: https://svn.redmine.org/redmine/trunk@21818 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/workflows_controller.rb | 2 | ||||
-rw-r--r-- | app/models/tracker.rb | 1 | ||||
-rw-r--r-- | test/functional/workflows_controller_test.rb | 16 | ||||
-rw-r--r-- | test/unit/tracker_test.rb | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/app/controllers/workflows_controller.rb b/app/controllers/workflows_controller.rb index c0d5f865e..3157ec6b3 100644 --- a/app/controllers/workflows_controller.rb +++ b/app/controllers/workflows_controller.rb @@ -161,6 +161,8 @@ class WorkflowsController < ApplicationController role_ids = Role.all.select(&:consider_workflow?).map(&:id) status_ids = WorkflowTransition.where( :tracker_id => @trackers.map(&:id), :role_id => role_ids + ).where( + 'old_status_id <> new_status_id' ).distinct.pluck(:old_status_id, :new_status_id).flatten.uniq @statuses = IssueStatus.where(:id => status_ids).sorted.to_a.presence end diff --git a/app/models/tracker.rb b/app/models/tracker.rb index c5665054c..fcc61222f 100644 --- a/app/models/tracker.rb +++ b/app/models/tracker.rb @@ -108,6 +108,7 @@ class Tracker < ActiveRecord::Base else @issue_status_ids ||= WorkflowTransition.where(:tracker_id => id). + where('old_status_id <> new_status_id'). distinct.pluck(:old_status_id, :new_status_id).flatten.uniq end end diff --git a/test/functional/workflows_controller_test.rb b/test/functional/workflows_controller_test.rb index d086801ae..05689090b 100644 --- a/test/functional/workflows_controller_test.rb +++ b/test/functional/workflows_controller_test.rb @@ -83,6 +83,22 @@ class WorkflowsControllerTest < Redmine::ControllerTest ) end + def test_get_edit_with_role_and_tracker_should_not_include_only_identity_workflows + WorkflowTransition.delete_all + WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 1) + WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 2, :new_status_id => 3) + + get :edit, :params => {:role_id => 1, :tracker_id => 1} + assert_response :success + + # statuses 1 and 5 not displayed + statuses = IssueStatus.where(:id => [2, 3]).sorted.pluck(:name) + assert_equal( + ["New issue"] + statuses, + css_select('table.workflows.transitions-always tbody tr td:first').map(&:text).map(&:strip) + ) + end + def test_get_edit_should_include_allowed_statuses_for_new_issues WorkflowTransition.delete_all WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 0, :new_status_id => 1) diff --git a/test/unit/tracker_test.rb b/test/unit/tracker_test.rb index f81aeb63b..8eef06e58 100644 --- a/test/unit/tracker_test.rb +++ b/test/unit/tracker_test.rb @@ -89,6 +89,7 @@ class TrackerTest < ActiveSupport::TestCase def test_issue_statuses tracker = Tracker.find(1) WorkflowTransition.delete_all + WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 1) WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 2, :new_status_id => 3) WorkflowTransition.create!(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 5) |