##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15699:68c7f4ef2085
r15741:f8df935dcada
Show More
workflows_controller_test.rb
438 lines | 17.8 KiB | text/x-ruby | RubyLexer
/ test / functional / workflows_controller_test.rb
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808 #
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808 #
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Adds a workflow overview screen....
r1912
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class WorkflowsControllerTest < Redmine::ControllerTest
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 fixtures :roles, :trackers, :workflows, :users, :issue_statuses
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def setup
User.current = nil
@request.session[:user_id] = 1 # admin
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def test_index
get :index
assert_response :success
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Cleanup of finders with :conditions option....
r11733 count = WorkflowTransition.where(:role_id => 1, :tracker_id => 2).count
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 assert_select 'a[href=?]', '/workflows/edit?role_id=1&tracker_id=2', :content => count.to_s
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def test_get_edit
get :edit
assert_response :success
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def test_get_edit_with_role_and_tracker
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 WorkflowTransition.delete_all
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)
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:role_id => 2, :tracker_id => 1}
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 assert_response :success
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 # used status only
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 statuses = IssueStatus.where(:id => [2, 3, 5]).sorted.pluck(:name)
assert_equal ["New issue"] + statuses,
css_select('table.workflows.transitions-always tbody tr td:first').map(&:text).map(&:strip)
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # allowed transitions
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'input[type=checkbox][name=?][value="1"][checked=checked]', 'transitions[3][5][always]'
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # not allowed
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'input[type=checkbox][name=?][value="1"]:not([checked=checked])', 'transitions[3][2][always]'
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 # unused
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'input[type=checkbox][name=?]', 'transitions[1][1][always]', 0
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Workflow editing shows statuses of irrelevant roles (#24281)....
r15699 def test_get_edit_with_role_and_tracker_should_not_include_statuses_from_roles_without_workflow_permissions
WorkflowTransition.delete_all
WorkflowTransition.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 2, :new_status_id => 3)
reporter = Role.find(3)
reporter.remove_permission! :edit_issues
reporter.remove_permission! :add_issues
assert !reporter.consider_workflow?
WorkflowTransition.create!(:role_id => 3, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5)
get :edit, :params => {:role_id => 2, :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
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 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)
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:role_id => 1, :tracker_id => 1}
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 assert_response :success
assert_select 'td', 'New issue'
assert_select 'input[type=checkbox][name=?][value="1"][checked=checked]', 'transitions[0][1][always]'
end
Jean-Philippe Lang
Adds a few tests....
r13313 def test_get_edit_with_all_roles_and_all_trackers
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:role_id => 'all', :tracker_id => 'all'}
Jean-Philippe Lang
Adds a few tests....
r13313 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
assert_select 'select[name=?][multiple=multiple]', 'role_id[]' do
assert_select 'option[selected=selected]', Role.all.select(&:consider_workflow?).count
end
assert_select 'select[name=?]', 'tracker_id[]' do
assert_select 'option[selected=selected][value=all]'
end
Jean-Philippe Lang
Adds a few tests....
r13313 end
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 def test_get_edit_with_role_and_tracker_and_all_statuses
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 WorkflowTransition.delete_all
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:role_id => 2, :tracker_id => 1, :used_statuses_only => '0'}
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 assert_response :success
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 statuses = IssueStatus.all.sorted.pluck(:name)
assert_equal ["New issue"] + statuses,
css_select('table.workflows.transitions-always tbody tr td:first').map(&:text).map(&:strip)
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'input[type=checkbox][name=?]', 'transitions[1][1][always]'
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def test_post_edit
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 WorkflowTransition.delete_all
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:role_id => 2,
:tracker_id => 1,
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 :transitions => {
'4' => {'5' => {'always' => '1'}},
'3' => {'1' => {'always' => '1'}, '2' => {'always' => '1'}}
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 }
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 }
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_response 302
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 assert_equal 3, WorkflowTransition.where(:tracker_id => 1, :role_id => 2).count
assert_not_nil WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2).first
assert_nil WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4).first
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 def test_post_edit_with_allowed_statuses_for_new_issues
WorkflowTransition.delete_all
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:role_id => 2,
:tracker_id => 1,
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 :transitions => {
'0' => {'1' => {'always' => '1'}, '2' => {'always' => '1'}}
}
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 }
Jean-Philippe Lang
Makes new issue initial status settable in workflow (#5816)....
r14076 assert_response 302
assert WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 0, :new_status_id => 1).any?
assert WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 0, :new_status_id => 2).any?
assert_equal 2, WorkflowTransition.where(:tracker_id => 1, :role_id => 2).count
end
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 def test_post_edit_with_additional_transitions
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 WorkflowTransition.delete_all
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:role_id => 2,
:tracker_id => 1,
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 :transitions => {
'4' => {'5' => {'always' => '1', 'author' => '0', 'assignee' => '0'}},
'3' => {'1' => {'always' => '0', 'author' => '1', 'assignee' => '0'},
'2' => {'always' => '0', 'author' => '0', 'assignee' => '1'},
'4' => {'always' => '0', 'author' => '1', 'assignee' => '1'}}
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 }
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 }
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_response 302
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 assert_equal 4, WorkflowTransition.where(:tracker_id => 1, :role_id => 2).count
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 w = WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5).first
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 assert ! w.author
assert ! w.assignee
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 w = WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1).first
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 assert w.author
assert ! w.assignee
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 w = WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2).first
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 assert ! w.author
assert w.assignee
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 w = WorkflowTransition.where(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4).first
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 assert w.author
assert w.assignee
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 def test_get_permissions
get :permissions
assert_response :success
end
def test_get_permissions_with_role_and_tracker
WorkflowPermission.delete_all
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 2, :field_name => 'assigned_to_id', :rule => 'required')
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 2, :field_name => 'fixed_version_id', :rule => 'required')
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 3, :field_name => 'fixed_version_id', :rule => 'readonly')
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => 1, :tracker_id => 2}
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 assert_response :success
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'input[name=?][value="1"]', 'role_id[]'
assert_select 'input[name=?][value="2"]', 'tracker_id[]'
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794
# Required field
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'select[name=?]', 'permissions[2][assigned_to_id]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value=""]'
assert_select 'option[value=""][selected=selected]', 0
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 assert_select 'option[value=readonly]', :text => 'Read-only'
assert_select 'option[value=readonly][selected=selected]', 0
assert_select 'option[value=required]', :text => 'Required'
assert_select 'option[value=required][selected=selected]'
end
# Read-only field
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'select[name=?]', 'permissions[3][fixed_version_id]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value=""]'
assert_select 'option[value=""][selected=selected]', 0
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 assert_select 'option[value=readonly]', :text => 'Read-only'
assert_select 'option[value=readonly][selected=selected]'
assert_select 'option[value=required]', :text => 'Required'
assert_select 'option[value=required][selected=selected]', 0
end
# Other field
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'select[name=?]', 'permissions[3][due_date]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value=""]'
assert_select 'option[value=""][selected=selected]', 0
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 assert_select 'option[value=readonly]', :text => 'Read-only'
assert_select 'option[value=readonly][selected=selected]', 0
assert_select 'option[value=required]', :text => 'Required'
assert_select 'option[value=required][selected=selected]', 0
end
end
Jean-Philippe Lang
Don't show "Required" option for standard/custom fields that are always required....
r9827 def test_get_permissions_with_required_custom_field_should_not_show_required_option
Jean-Philippe Lang
No blank option for custom fields marked as required on workflow settings....
r9818 cf = IssueCustomField.create!(:name => 'Foo', :field_format => 'string', :tracker_ids => [1], :is_required => true)
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => 1, :tracker_id => 1}
Jean-Philippe Lang
No blank option for custom fields marked as required on workflow settings....
r9818 assert_response :success
# Custom field that is always required
# The default option is "(Required)"
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'select[name=?]', "permissions[3][#{cf.id}]" do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value=""]'
Jean-Philippe Lang
No blank option for custom fields marked as required on workflow settings....
r9818 assert_select 'option[value=readonly]', :text => 'Read-only'
assert_select 'option[value=required]', 0
end
end
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 def test_get_permissions_should_disable_hidden_custom_fields
cf1 = IssueCustomField.generate!(:tracker_ids => [1], :visible => true)
cf2 = IssueCustomField.generate!(:tracker_ids => [1], :visible => false, :role_ids => [1])
cf3 = IssueCustomField.generate!(:tracker_ids => [1], :visible => false, :role_ids => [1, 2])
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => 2, :tracker_id => 1}
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 assert_response :success
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'select[name=?]:not(.disabled)', "permissions[1][#{cf1.id}]"
assert_select 'select[name=?]:not(.disabled)', "permissions[1][#{cf3.id}]"
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_select 'select[name=?][disabled=disabled]', "permissions[1][#{cf2.id}]" do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value=""][selected=selected]', :text => 'Hidden'
Jean-Philippe Lang
Role-based issue custom field visibility (#5037)....
r11782 end
end
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 def test_get_permissions_with_missing_permissions_for_roles_should_default_to_no_change
WorkflowPermission.delete_all
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 1, :field_name => 'assigned_to_id', :rule => 'required')
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => [1, 2], :tracker_id => 2}
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_response :success
assert_select 'select[name=?]', 'permissions[1][assigned_to_id]' do
assert_select 'option[selected]', 1
assert_select 'option[selected][value=no_change]'
end
end
def test_get_permissions_with_different_permissions_for_roles_should_default_to_no_change
WorkflowPermission.delete_all
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 1, :field_name => 'assigned_to_id', :rule => 'required')
WorkflowPermission.create!(:role_id => 2, :tracker_id => 2, :old_status_id => 1, :field_name => 'assigned_to_id', :rule => 'readonly')
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => [1, 2], :tracker_id => 2}
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_response :success
assert_select 'select[name=?]', 'permissions[1][assigned_to_id]' do
assert_select 'option[selected]', 1
assert_select 'option[selected][value=no_change]'
end
end
def test_get_permissions_with_same_permissions_for_roles_should_default_to_permission
WorkflowPermission.delete_all
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 1, :field_name => 'assigned_to_id', :rule => 'required')
WorkflowPermission.create!(:role_id => 2, :tracker_id => 2, :old_status_id => 1, :field_name => 'assigned_to_id', :rule => 'required')
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => [1, 2], :tracker_id => 2}
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_response :success
assert_select 'select[name=?]', 'permissions[1][assigned_to_id]' do
assert_select 'option[selected]', 1
assert_select 'option[selected][value=required]'
end
end
def test_get_permissions_with_role_and_tracker_and_all_statuses_should_show_all_statuses
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 WorkflowTransition.delete_all
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => 1, :tracker_id => 2, :used_statuses_only => '0'}
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
statuses = IssueStatus.all.sorted.pluck(:name)
assert_equal statuses,
css_select('table.workflows.fields_permissions thead tr:nth-child(2) td:not(:first-child)').map(&:text).map(&:strip)
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 end
Jean-Philippe Lang
"Required" and "Read-only" rules on "Fields Permissions" screen are not colored (#19580)....
r13778 def test_get_permissions_should_set_css_class
WorkflowPermission.delete_all
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 1, :field_name => 'assigned_to_id', :rule => 'required')
Jean-Philippe Lang
Highlighting of required and read-only custom fields broken in Workflow editor (#22305)....
r14911 cf = IssueCustomField.create!(:name => 'Foo', :field_format => 'string', :tracker_ids => [2])
WorkflowPermission.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 1, :field_name => cf.id, :rule => 'required')
Jean-Philippe Lang
"Required" and "Read-only" rules on "Fields Permissions" screen are not colored (#19580)....
r13778
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :permissions, :params => {:role_id => 1, :tracker_id => 2}
Jean-Philippe Lang
"Required" and "Read-only" rules on "Fields Permissions" screen are not colored (#19580)....
r13778 assert_response :success
assert_select 'td.required > select[name=?]', 'permissions[1][assigned_to_id]'
Jean-Philippe Lang
Highlighting of required and read-only custom fields broken in Workflow editor (#22305)....
r14911 assert_select 'td.required > select[name=?]', "permissions[1][#{cf.id}]"
Jean-Philippe Lang
"Required" and "Read-only" rules on "Fields Permissions" screen are not colored (#19580)....
r13778 end
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 def test_post_permissions
WorkflowPermission.delete_all
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :permissions, :params => {
:role_id => 1,
:tracker_id => 2,
:permissions => {
'1' => {'assigned_to_id' => '', 'fixed_version_id' => 'required', 'due_date' => ''},
'2' => {'assigned_to_id' => 'readonly', 'fixed_version_id' => 'readonly', 'due_date' => ''},
'3' => {'assigned_to_id' => '', 'fixed_version_id' => '', 'due_date' => ''}
}
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 }
Jean-Philippe Lang
Bulk edit workflows for multiple trackers/roles (#16164)....
r12649 assert_response 302
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794
workflows = WorkflowPermission.all
assert_equal 3, workflows.size
workflows.each do |workflow|
assert_equal 1, workflow.role_id
assert_equal 2, workflow.tracker_id
end
assert workflows.detect {|wf| wf.old_status_id == 2 && wf.field_name == 'assigned_to_id' && wf.rule == 'readonly'}
assert workflows.detect {|wf| wf.old_status_id == 1 && wf.field_name == 'fixed_version_id' && wf.rule == 'required'}
assert workflows.detect {|wf| wf.old_status_id == 2 && wf.field_name == 'fixed_version_id' && wf.rule == 'readonly'}
end
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 def test_get_copy
get :copy
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
Jean-Philippe Lang
Fixed that option tags are escaped....
r9500 assert_select 'select[name=source_tracker_id]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="1"]', :text => 'Bug'
Jean-Philippe Lang
Fixed that option tags are escaped....
r9500 end
assert_select 'select[name=source_role_id]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="2"]', :text => 'Developer'
Jean-Philippe Lang
Fixed that option tags are escaped....
r9500 end
assert_select 'select[name=?]', 'target_tracker_ids[]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="3"]', :text => 'Support request'
Jean-Philippe Lang
Fixed that option tags are escaped....
r9500 end
assert_select 'select[name=?]', 'target_role_ids[]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="1"]', :text => 'Manager'
Jean-Philippe Lang
Fixed that option tags are escaped....
r9500 end
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 def test_post_copy_one_to_one
source_transitions = status_transitions(:tracker_id => 1, :role_id => 2)
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :copy, :params => {
:source_tracker_id => '1', :source_role_id => '2',
:target_tracker_ids => ['3'], :target_role_ids => ['1']
}
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 assert_response 302
assert_equal source_transitions, status_transitions(:tracker_id => 3, :role_id => 1)
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 def test_post_copy_one_to_many
source_transitions = status_transitions(:tracker_id => 1, :role_id => 2)
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :copy, :params => {
:source_tracker_id => '1', :source_role_id => '2',
:target_tracker_ids => ['2', '3'], :target_role_ids => ['1', '3']
}
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 assert_response 302
assert_equal source_transitions, status_transitions(:tracker_id => 2, :role_id => 1)
assert_equal source_transitions, status_transitions(:tracker_id => 3, :role_id => 1)
assert_equal source_transitions, status_transitions(:tracker_id => 2, :role_id => 3)
assert_equal source_transitions, status_transitions(:tracker_id => 3, :role_id => 3)
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 def test_post_copy_many_to_many
source_t2 = status_transitions(:tracker_id => 2, :role_id => 2)
source_t3 = status_transitions(:tracker_id => 3, :role_id => 2)
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :copy, :params => {
:source_tracker_id => 'any', :source_role_id => '2',
:target_tracker_ids => ['2', '3'], :target_role_ids => ['1', '3']
}
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 assert_response 302
assert_equal source_t2, status_transitions(:tracker_id => 2, :role_id => 1)
assert_equal source_t3, status_transitions(:tracker_id => 3, :role_id => 1)
assert_equal source_t2, status_transitions(:tracker_id => 2, :role_id => 3)
assert_equal source_t3, status_transitions(:tracker_id => 3, :role_id => 3)
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/workflows_controller_test.rb....
r6808
Jean-Philippe Lang
Code cleanup....
r10758 def test_post_copy_with_incomplete_source_specification_should_fail
assert_no_difference 'WorkflowRule.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :copy, :params => {
Jean-Philippe Lang
Code cleanup....
r10758 :source_tracker_id => '', :source_role_id => '2',
:target_tracker_ids => ['2', '3'], :target_role_ids => ['1', '3']
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 }
Jean-Philippe Lang
Code cleanup....
r10758 assert_response 200
assert_select 'div.flash.error', :text => 'Please select a source tracker or role'
end
end
def test_post_copy_with_incomplete_target_specification_should_fail
assert_no_difference 'WorkflowRule.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :copy, :params => {
Jean-Philippe Lang
Code cleanup....
r10758 :source_tracker_id => '1', :source_role_id => '2',
:target_tracker_ids => ['2', '3']
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 }
Jean-Philippe Lang
Code cleanup....
r10758 assert_response 200
assert_select 'div.flash.error', :text => 'Please select target tracker(s) and role(s)'
end
end
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 # Returns an array of status transitions that can be compared
def status_transitions(conditions)
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 WorkflowTransition.
where(conditions).
order('tracker_id, role_id, old_status_id, new_status_id').
collect {|w| [w.old_status, w.new_status_id]}
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 end
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end