1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-31 11:37:14 +00:00

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
This commit is contained in:
Go MAEDA 2022-09-17 07:58:12 +00:00
parent d4b7634cc6
commit ab2b130e3c
4 changed files with 20 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)