##// 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:

r15531:d8df8c8bcb1e
r15741:f8df935dcada
Show More
roles_controller_test.rb
263 lines | 8.0 KiB | text/x-ruby | RubyLexer
/ test / functional / roles_controller_test.rb
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Workflow copy:...
r1237 #
# 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/roles_controller_test.rb....
r6486 #
Jean-Philippe Lang
Workflow copy:...
r1237 # 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/roles_controller_test.rb....
r6486 #
Jean-Philippe Lang
Workflow copy:...
r1237 # 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
Workflow copy:...
r1237
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class RolesControllerTest < Redmine::ControllerTest
Toshi MARUYAMA
Add missing fixture when running tests from scratch in functional RolesControllerTest....
r5490 fixtures :roles, :users, :members, :member_roles, :workflows, :trackers
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Workflow copy:...
r1237 def setup
User.current = nil
@request.session[:user_id] = 1 # admin
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Resourcified roles....
r8025 def test_index
Jean-Philippe Lang
Add some tests on RolesController....
r1254 get :index
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'table.roles tbody' do
assert_select 'tr', Role.count
assert_select 'a[href="/roles/1/edit"]', :text => 'Manager'
end
Jean-Philippe Lang
Add some tests on RolesController....
r1254 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Resourcified roles....
r8025 def test_new
Jean-Philippe Lang
Workflow copy:...
r1237 get :new
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'input[name=?]', 'role[name]'
Jean-Philippe Lang
Fixed that new role does not have non member permissions as default (#23633)....
r15382 assert_select 'input[name=?]', 'role[permissions][]'
end
def test_new_should_prefill_permissions_with_non_member_permissions
role = Role.non_member
role.permissions = [:view_issues, :view_documents]
role.save!
get :new
assert_response :success
assert_equal %w(view_documents view_issues),
css_select('input[name="role[permissions][]"][checked=checked]').map {|e| e.attr('value')}.sort
Jean-Philippe Lang
Workflow copy:...
r1237 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Create role by copy (#9258)....
r10102 def test_new_with_copy
copy_from = Role.find(2)
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :new, :params => {:copy => copy_from.id.to_s}
Jean-Philippe Lang
Create role by copy (#9258)....
r10102 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'input[name=?]', 'role[name]'
Jean-Philippe Lang
Create role by copy (#9258)....
r10102
assert_select 'form' do
# blank name
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'input[name=?][value=""]', 'role[name]'
Jean-Philippe Lang
Create role by copy (#9258)....
r10102 # edit_project permission checked
assert_select 'input[type=checkbox][name=?][value=edit_project][checked=checked]', 'role[permissions][]'
# add_project permission not checked
assert_select 'input[type=checkbox][name=?][value=add_project]', 'role[permissions][]'
assert_select 'input[type=checkbox][name=?][value=add_project][checked=checked]', 'role[permissions][]', 0
# workflow copy selected
assert_select 'select[name=?]', 'copy_workflow_from' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="2"][selected=selected]'
Jean-Philippe Lang
Create role by copy (#9258)....
r10102 end
end
end
Jean-Philippe Lang
Resourcified roles....
r8025 def test_create_with_validaton_failure
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :create, :params => {
:role => {
:name => '',
:permissions => ['add_issues', 'edit_issues', 'log_time', ''],
:assignable => '0'
}
}
Jean-Philippe Lang
Workflow copy:...
r1237 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select_error /Name cannot be blank/
Jean-Philippe Lang
Workflow copy:...
r1237 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Resourcified roles....
r8025 def test_create_without_workflow_copy
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :create, :params => {
:role => {
:name => 'RoleWithoutWorkflowCopy',
:permissions => ['add_issues', 'edit_issues', 'log_time', ''],
:assignable => '0'
}
}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Workflow copy:...
r1237 role = Role.find_by_name('RoleWithoutWorkflowCopy')
assert_not_nil role
assert_equal [:add_issues, :edit_issues, :log_time], role.permissions
assert !role.assignable?
end
Jean-Philippe Lang
Resourcified roles....
r8025 def test_create_with_workflow_copy
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :create, :params => {
:role => {
:name => 'RoleWithWorkflowCopy',
:permissions => ['add_issues', 'edit_issues', 'log_time', ''],
:assignable => '0'
},
:copy_workflow_from => '1'
}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Workflow copy:...
r1237 role = Role.find_by_name('RoleWithWorkflowCopy')
assert_not_nil role
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 assert_equal Role.find(1).workflow_rules.size, role.workflow_rules.size
Jean-Philippe Lang
Workflow copy:...
r1237 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Fixed that r15668 prevents from setting managed roles....
r15530 def test_create_with_managed_roles
role = new_record(Role) do
post :create, :params => {
:role => {
:name => 'Role',
:all_roles_managed => '0',
:managed_role_ids => ['2', '3', '']
}
}
assert_response 302
end
assert_equal false, role.all_roles_managed
Jean-Philippe Lang
Role#copy_from should copy managed roles....
r15531 assert_equal [2, 3], role.managed_role_ids.sort
Jean-Philippe Lang
Fixed that r15668 prevents from setting managed roles....
r15530 end
Jean-Philippe Lang
Resourcified roles....
r8025 def test_edit
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:id => 1}
Jean-Philippe Lang
Workflow copy:...
r1237 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
assert_select 'input[name=?][value=?]', 'role[name]', 'Manager'
Jean-Philippe Lang
Anonymous users should always see public issues only (#11872)....
r10254 assert_select 'select[name=?]', 'role[issues_visibility]'
end
def test_edit_anonymous
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:id => Role.anonymous.id}
Jean-Philippe Lang
Anonymous users should always see public issues only (#11872)....
r10254 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
assert_select 'input[name=?]', 'role[name]', 0
Jean-Philippe Lang
Anonymous users should always see public issues only (#11872)....
r10254 assert_select 'select[name=?]', 'role[issues_visibility]', 0
Jean-Philippe Lang
Workflow copy:...
r1237 end
Jean-Philippe Lang
Adds functional tests....
r8827 def test_edit_invalid_should_respond_with_404
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :edit, :params => {:id => 999}
Jean-Philippe Lang
Adds functional tests....
r8827 assert_response 404
end
Jean-Philippe Lang
Resourcified roles....
r8025 def test_update
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {
:id => 1,
:role => {
:name => 'Manager',
:permissions => ['edit_project', ''],
:assignable => '0'
}
}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Workflow copy:...
r1237 role = Role.find(1)
assert_equal [:edit_project], role.permissions
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Limit trackers for new issue to certain roles (#7839)....
r15082 def test_update_trackers_permissions
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {
:id => 1,
:role => {
:permissions_all_trackers => {'add_issues' => '0'},
:permissions_tracker_ids => {'add_issues' => ['1', '3', '']}
}
Jean-Philippe Lang
Limit trackers for new issue to certain roles (#7839)....
r15082 }
assert_redirected_to '/roles'
role = Role.find(1)
assert_equal({'add_issues' => '0'}, role.permissions_all_trackers)
assert_equal({'add_issues' => ['1', '3']}, role.permissions_tracker_ids)
assert_equal false, role.permissions_all_trackers?(:add_issues)
assert_equal [1, 3], role.permissions_tracker_ids(:add_issues).sort
end
Jean-Philippe Lang
Resourcified roles....
r8025 def test_update_with_failure
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {:id => 1, :role => {:name => ''}}
Jean-Philippe Lang
Resourcified roles....
r8025 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select_error /Name cannot be blank/
Jean-Philippe Lang
Resourcified roles....
r8025 end
Jean-Philippe Lang
Add some tests on RolesController....
r1254 def test_destroy
Jean-Philippe Lang
Resourcified roles....
r8025 r = Role.create!(:name => 'ToBeDestroyed', :permissions => [:view_wiki_pages])
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 delete :destroy, :params => {:id => r}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_nil Role.find_by_id(r.id)
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Add some tests on RolesController....
r1254 def test_destroy_role_in_use
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 delete :destroy, :params => {:id => 1}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Resourcified roles....
r8025 assert_equal 'This role is in use and cannot be deleted.', flash[:error]
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_not_nil Role.find_by_id(1)
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Resourcified roles....
r8025 def test_get_permissions
get :permissions
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_response :success
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'input[name=?][type=checkbox][value=add_issues][checked=checked]', 'permissions[3][]'
assert_select 'input[name=?][type=checkbox][value=delete_issues]:not([checked])', 'permissions[3][]'
Jean-Philippe Lang
Add some tests on RolesController....
r1254 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Resourcified roles....
r8025 def test_post_permissions
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :permissions, :params => {
:permissions => {
'0' => '',
'1' => ['edit_issues'],
'3' => ['add_issues', 'delete_issues']
}
}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_equal [:edit_issues], Role.find(1).permissions
assert_equal [:add_issues, :delete_issues], Role.find(3).permissions
assert Role.find(2).permissions.empty?
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Add some tests on RolesController....
r1254 def test_clear_all_permissions
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :permissions, :params => {:permissions => { '0' => '' }}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert Role.find(1).permissions.empty?
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/roles_controller_test.rb....
r6486
Jean-Philippe Lang
Add some tests on RolesController....
r1254 def test_move_highest
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {:id => 3, :role => {:position => 1}}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_equal 1, Role.find(3).position
end
def test_move_higher
position = Role.find(3).position
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {:id => 3, :role => {:position => position - 1}}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_equal position - 1, Role.find(3).position
end
def test_move_lower
position = Role.find(2).position
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {:id => 2, :role => {:position => position + 1}}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Add some tests on RolesController....
r1254 assert_equal position + 1, Role.find(2).position
end
def test_move_lowest
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 put :update, :params => {:id => 2, :role => {:position => Role.givable.count}}
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/roles'
Jean-Philippe Lang
Replaces acts_as_list with an implementation that handles #position= (#12909)....
r14953 assert_equal Role.givable.count, Role.find(2).position
Jean-Philippe Lang
Add some tests on RolesController....
r1254 end
Jean-Philippe Lang
Workflow copy:...
r1237 end