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

r15734:514d9bad9efd
r15741:f8df935dcada
Show More
members_controller_test.rb
215 lines | 7.0 KiB | text/x-ruby | RubyLexer
/ test / functional / members_controller_test.rb
Jean-Philippe Lang
Adds some functional tests....
r2477 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Adds some functional tests....
r2477 #
# 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/members_controller_test.rb....
r6786 #
Jean-Philippe Lang
Adds some functional tests....
r2477 # 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/members_controller_test.rb....
r6786 #
Jean-Philippe Lang
Adds some functional tests....
r2477 # 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__)
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class MembersControllerTest < Redmine::ControllerTest
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 fixtures :projects, :members, :member_roles, :roles, :users
Toshi MARUYAMA
remove trailing white-spaces from test/functional/members_controller_test.rb....
r6786
Jean-Philippe Lang
Adds some functional tests....
r2477 def setup
User.current = nil
@request.session[:user_id] = 2
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/members_controller_test.rb....
r6786
Jean-Philippe Lang
Moved new project member to its own action MemberController#new....
r13218 def test_new
get :new, :project_id => 1
assert_response :success
end
Jean-Philippe Lang
Ability to limit member management to certain roles (#19707)....
r13911 def test_new_should_propose_managed_roles_only
role = Role.find(1)
role.update! :all_roles_managed => false
role.managed_roles = Role.where(:id => [2, 3]).to_a
get :new, :project_id => 1
assert_response :success
assert_select 'div.roles-selection' do
assert_select 'label', :text => 'Manager', :count => 0
assert_select 'label', :text => 'Developer'
assert_select 'label', :text => 'Reporter'
end
end
Jean-Philippe Lang
Moved new project member to its own action MemberController#new....
r13218 def test_xhr_new
xhr :get, :new, :project_id => 1
assert_response :success
assert_equal 'text/javascript', response.content_type
end
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 def test_create
Jean-Philippe Lang
Adds some functional tests....
r2477 assert_difference 'Member.count' do
Jean-Philippe Lang
Resourcified project memberships....
r8669 post :create, :project_id => 1, :membership => {:role_ids => [1], :user_id => 7}
Jean-Philippe Lang
Adds some functional tests....
r2477 end
assert_redirected_to '/projects/ecookbook/settings/members'
assert User.find(7).member_of?(Project.find(1))
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/members_controller_test.rb....
r6786
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 def test_create_multiple
assert_difference 'Member.count', 3 do
Jean-Philippe Lang
Resourcified project memberships....
r8669 post :create, :project_id => 1, :membership => {:role_ids => [1], :user_ids => [7, 8, 9]}
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 end
assert_redirected_to '/projects/ecookbook/settings/members'
assert User.find(7).member_of?(Project.find(1))
end
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635
Jean-Philippe Lang
Ability to limit member management to certain roles (#19707)....
r13911 def test_create_should_ignore_unmanaged_roles
role = Role.find(1)
role.update! :all_roles_managed => false
role.managed_roles = Role.where(:id => [2, 3]).to_a
assert_difference 'Member.count' do
post :create, :project_id => 1, :membership => {:role_ids => [1, 2], :user_id => 7}
end
member = Member.order(:id => :desc).first
assert_equal [2], member.role_ids
end
def test_create_should_be_allowed_for_admin_without_role
User.find(1).members.delete_all
@request.session[:user_id] = 1
assert_difference 'Member.count' do
post :create, :project_id => 1, :membership => {:role_ids => [1, 2], :user_id => 7}
end
member = Member.order(:id => :desc).first
assert_equal [1, 2], member.role_ids
end
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 def test_xhr_create
assert_difference 'Member.count', 3 do
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 xhr :post, :create, :project_id => 1, :membership => {:role_ids => [1], :user_ids => [7, 8, 9]}
assert_response :success
assert_equal 'text/javascript', response.content_type
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 end
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 assert User.find(7).member_of?(Project.find(1))
assert User.find(8).member_of?(Project.find(1))
assert User.find(9).member_of?(Project.find(1))
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 assert_include 'tab-content-members', response.body
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 end
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 def test_xhr_create_with_failure
assert_no_difference 'Member.count' do
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 xhr :post, :create, :project_id => 1, :membership => {:role_ids => [], :user_ids => [7, 8, 9]}
assert_response :success
assert_equal 'text/javascript', response.content_type
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 end
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 assert_match /alert/, response.body, "Alert message not sent"
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/members_controller_test.rb....
r6786
Jean-Philippe Lang
Ability to limit member management to certain roles (#19707)....
r13911 def test_update
Jean-Philippe Lang
Adds some functional tests....
r2477 assert_no_difference 'Member.count' do
Jean-Philippe Lang
Resourcified project memberships....
r8669 put :update, :id => 2, :membership => {:role_ids => [1], :user_id => 3}
Jean-Philippe Lang
Adds some functional tests....
r2477 end
assert_redirected_to '/projects/ecookbook/settings/members'
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/members_controller_test.rb....
r6786
Jean-Philippe Lang
Fixed that project settings should show locked members (#22034)....
r15734 def test_update_locked_member_should_be_allowed
User.find(3).lock!
put :update, :id => 2, :membership => {:role_ids => [1]}
assert_response 302
member = Member.find(2)
assert member.user.locked?
assert_equal [1], member.role_ids
end
Jean-Philippe Lang
Ability to limit member management to certain roles (#19707)....
r13911 def test_update_should_not_add_unmanaged_roles
role = Role.find(1)
role.update! :all_roles_managed => false
role.managed_roles = Role.where(:id => [2, 3]).to_a
member = Member.create!(:user => User.find(9), :role_ids => [3], :project_id => 1)
put :update, :id => member.id, :membership => {:role_ids => [1, 2, 3]}
assert_equal [2, 3], member.reload.role_ids.sort
end
def test_update_should_not_remove_unmanaged_roles
role = Role.find(1)
role.update! :all_roles_managed => false
role.managed_roles = Role.where(:id => [2, 3]).to_a
member = Member.create!(:user => User.find(9), :role_ids => [1, 3], :project_id => 1)
put :update, :id => member.id, :membership => {:role_ids => [2]}
assert_equal [1, 2], member.reload.role_ids.sort
end
def test_xhr_update
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 assert_no_difference 'Member.count' do
Jean-Philippe Lang
Resourcified project memberships....
r8669 xhr :put, :update, :id => 2, :membership => {:role_ids => [1], :user_id => 3}
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 assert_response :success
assert_equal 'text/javascript', response.content_type
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 end
member = Member.find(2)
assert_equal [1], member.role_ids
assert_equal 3, member.user_id
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 assert_include 'tab-content-members', response.body
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 end
Jean-Philippe Lang
Adds some functional tests....
r2477 def test_destroy
assert_difference 'Member.count', -1 do
Jean-Philippe Lang
Resourcified project memberships....
r8669 delete :destroy, :id => 2
Jean-Philippe Lang
Adds some functional tests....
r2477 end
assert_redirected_to '/projects/ecookbook/settings/members'
assert !User.find(3).member_of?(Project.find(1))
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/members_controller_test.rb....
r6786
Jean-Philippe Lang
Fixed that project settings should show locked members (#22034)....
r15734 def test_destroy_locked_member_should_be_allowed
assert User.find(3).lock!
assert_difference 'Member.count', -1 do
delete :destroy, :id => 2
end
end
Jean-Philippe Lang
Ability to limit member management to certain roles (#19707)....
r13911 def test_destroy_should_fail_with_unmanaged_roles
role = Role.find(1)
role.update! :all_roles_managed => false
role.managed_roles = Role.where(:id => [2, 3]).to_a
member = Member.create!(:user => User.find(9), :role_ids => [1, 3], :project_id => 1)
assert_no_difference 'Member.count' do
delete :destroy, :id => member.id
end
end
def test_destroy_should_succeed_with_managed_roles_only
role = Role.find(1)
role.update! :all_roles_managed => false
role.managed_roles = Role.where(:id => [2, 3]).to_a
member = Member.create!(:user => User.find(9), :role_ids => [3], :project_id => 1)
assert_difference 'Member.count', -1 do
delete :destroy, :id => member.id
end
end
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 def test_xhr_destroy
assert_difference 'Member.count', -1 do
Jean-Philippe Lang
Resourcified project memberships....
r8669 xhr :delete, :destroy, :id => 2
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 assert_response :success
assert_equal 'text/javascript', response.content_type
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 end
Jean-Philippe Lang
Removes RJS from MembersController....
r9875 assert_nil Member.find_by_id(2)
assert_include 'tab-content-members', response.body
Jean-Philippe Lang
Adds functional tests for MembersController....
r7870 end
Jean-Philippe Lang
Resourcified project memberships....
r8669 def test_autocomplete
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 xhr :get, :autocomplete, :project_id => 1, :q => 'mis', :format => 'js'
Jean-Philippe Lang
Adds a user search field with autocompleter on project members screen....
r2549 assert_response :success
Jean-Philippe Lang
Adds pagination to users list when adding project or group members (#9549)....
r10970 assert_include 'User Misc', response.body
Jean-Philippe Lang
Adds a user search field with autocompleter on project members screen....
r2549 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 end