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

r14856:cda9c63d9c21
r15741:f8df935dcada
Show More
principal_test.rb
136 lines | 4.7 KiB | text/x-ruby | RubyLexer
/ test / unit / principal_test.rb
Jean-Philippe Lang
Fixed that Principal#like scope does not work with cyrillic characters and Postgresql (#12349)....
r10577 # encoding: utf-8
#
Toshi MARUYAMA
remove trailing white-spaces from test/unit/principal_test.rb....
r6647 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Eric Davis
Search mail addresses in Principal#like...
r3038 #
# 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/unit/principal_test.rb....
r6647 #
Eric Davis
Search mail addresses in Principal#like...
r3038 # 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/unit/principal_test.rb....
r6647 #
Eric Davis
Search mail addresses in Principal#like...
r3038 # 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
Search mail addresses in Principal#like...
r3038
class PrincipalTest < ActiveSupport::TestCase
Toshi MARUYAMA
add missing fixtures...
r13550 fixtures :users, :projects, :members, :member_roles, :roles,
:email_addresses
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Simplifies Principal.active scope (status defaults to 1 for groups)....
r8626 def test_active_scope_should_return_groups_and_active_users
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 result = Principal.active.to_a
Jean-Philippe Lang
Simplifies Principal.active scope (status defaults to 1 for groups)....
r8626 assert_include Group.first, result
assert_not_nil result.detect {|p| p.is_a?(User)}
assert_nil result.detect {|p| p.is_a?(User) && !p.active?}
assert_nil result.detect {|p| p.is_a?(AnonymousUser)}
end
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 def test_visible_scope_for_admin_should_return_all_principals
admin = User.generate! {|u| u.admin = true}
assert_equal Principal.count, Principal.visible(admin).count
end
def test_visible_scope_for_user_with_members_of_visible_projects_visibility_should_return_active_principals
Role.non_member.update! :users_visibility => 'all'
user = User.generate!
expected = Principal.active
assert_equal expected.map(&:id).sort, Principal.visible(user).pluck(:id).sort
end
def test_visible_scope_for_user_with_members_of_visible_projects_visibility_should_return_members_of_visible_projects_and_self
Role.non_member.update! :users_visibility => 'members_of_visible_projects'
user = User.generate!
Jean-Philippe Lang
Deprecates Project#member_principals....
r13950 expected = Project.visible(user).map {|p| p.memberships.active}.flatten.map(&:principal).uniq << user
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 assert_equal expected.map(&:id).sort, Principal.visible(user).pluck(:id).sort
end
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627 def test_member_of_scope_should_return_the_union_of_all_members
Toshi MARUYAMA
fix find_all_by_id(n1, n2) parameter at test_member_of_scope_should_return_the_union_of_all_members of PrincipalTest...
r12194 projects = Project.find([1])
assert_equal [3, 2], Principal.member_of(projects).sort.map(&:id)
projects = Project.find([1, 2])
assert_equal [3, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
Jean-Philippe Lang
Adds members of subprojects in assignee and author filters (#10126)....
r8627 end
Jean-Philippe Lang
Additional tests for Principal scopes....
r9312 def test_member_of_scope_should_be_empty_for_no_projects
assert_equal [], Principal.member_of([]).sort
end
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 def test_not_member_of_scope_should_return_users_that_have_no_memberships
Toshi MARUYAMA
fix find_all_by_id(n1, n2) parameter at test_not_member_of_scope_should_return_users_that_have_no_memberships of PrincipalTest...
r12193 [[1], [1, 2]].each do |ids|
projects = Project.find(ids)
assert_equal ids.size, projects.count
expected = (Principal.all - projects.map(&:memberships).flatten.map(&:principal)).sort
assert_equal expected, Principal.not_member_of(projects).sort
end
Jean-Philippe Lang
Fixed that the proposed users list may be empty when adding a project member (#10374)....
r9008 end
Jean-Philippe Lang
Additional tests for Principal scopes....
r9312 def test_not_member_of_scope_should_be_empty_for_no_projects
assert_equal [], Principal.not_member_of([]).sort
end
Jean-Philippe Lang
Adds "sorted" scope to Principal and User and sort users/groups properly....
r11029 def test_sorted_scope_should_sort_users_before_groups
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053 scope = Principal.where(:type => ['User', 'Group'])
users = scope.select {|p| p.is_a?(User)}.sort
groups = scope.select {|p| p.is_a?(Group)}.sort
assert_equal (users + groups).map(&:name).map(&:downcase),
Toshi MARUYAMA
remove unneeded Relation#all from PrincipalTest...
r12437 scope.sorted.map(&:name).map(&:downcase)
Jean-Philippe Lang
Adds "sorted" scope to Principal and User and sort users/groups properly....
r11029 end
Jean-Philippe Lang
Removing shoulda context....
r11085 test "like scope should search login" do
results = Principal.like('jsmi')
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 assert results.any?
assert results.all? {|u| u.login.match(/jsmi/i) }
end
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 test "like scope should search firstname" do
results = Principal.like('john')
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 assert results.any?
assert results.all? {|u| u.firstname.match(/john/i) }
end
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 test "like scope should search lastname" do
results = Principal.like('smi')
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 assert results.any?
assert results.all? {|u| u.lastname.match(/smi/i) }
end
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 test "like scope should search mail" do
results = Principal.like('somenet')
Eric Davis
Search mail addresses in Principal#like...
r3038
Jean-Philippe Lang
Removing shoulda context....
r11085 assert results.any?
assert results.all? {|u| u.mail.match(/somenet/i) }
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/principal_test.rb....
r6647
Jean-Philippe Lang
Removing shoulda context....
r11085 test "like scope should search firstname and lastname" do
results = Principal.like('john smi')
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755
Jean-Philippe Lang
Removing shoulda context....
r11085 assert_equal 1, results.count
assert_equal User.find(2), results.first
end
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755
Jean-Philippe Lang
Removing shoulda context....
r11085 test "like scope should search lastname and firstname" do
results = Principal.like('smith joh')
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755
Jean-Philippe Lang
Removing shoulda context....
r11085 assert_equal 1, results.count
assert_equal User.find(2), results.first
Jean-Philippe Lang
Makes user autocompleters work with firstname and lastname....
r8755 end
Jean-Philippe Lang
Fixed that Principal#like scope does not work with cyrillic characters and Postgresql (#12349)....
r10577
def test_like_scope_with_cyrillic_name
user = User.generate!(:firstname => 'Соболев', :lastname => 'Денис')
results = Principal.like('Собо')
assert_equal 1, results.count
assert_equal user, results.first
end
Eric Davis
Search mail addresses in Principal#like...
r3038 end