Merge commit '580eedcab22dc7ead82134d351ef118578359935' as 'plugins/redmine_workload'
This commit is contained in:
110
plugins/redmine_workload/test/unit/user_selection_test.rb
Normal file
110
plugins/redmine_workload/test/unit/user_selection_test.rb
Normal file
@@ -0,0 +1,110 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require File.expand_path('../test_helper', __dir__)
|
||||
|
||||
class WlUserSelectionTest < ActiveSupport::TestCase
|
||||
include WlUserDataDefaults
|
||||
|
||||
fixtures :trackers, :projects, :projects_trackers, :members, :member_roles,
|
||||
:users, :issue_statuses, :enumerations, :roles
|
||||
|
||||
def setup
|
||||
@group1 = Group.generate!
|
||||
@group2 = Group.generate!
|
||||
@group3 = Group.generate!
|
||||
@user1 = User.generate!
|
||||
@user1.groups << @group1
|
||||
@user2 = User.generate!
|
||||
@user2.groups << @group2
|
||||
@user3 = User.generate!
|
||||
@user3.groups << @group3
|
||||
@group_member_ids = []
|
||||
@group_member_ids << @group1.users.map(&:id)
|
||||
@group_member_ids << @group2.users.map(&:id)
|
||||
@group_member_ids << @group3.users.map(&:id)
|
||||
@group_member_ids
|
||||
end
|
||||
|
||||
test 'should return all users if the current user is admin' do
|
||||
current_user = User.generate!(admin: true)
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [@group1.id, @group2.id, @group3.id])
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
assert_equal @group_member_ids.flatten.sort, users.allowed_to_display.map(&:id).sort
|
||||
end
|
||||
|
||||
test 'should return all active users when user has permission :view_all_workloads' do
|
||||
current_user = users :users_002 # jsmith
|
||||
manager = roles :roles_001 # manager
|
||||
manager.add_permission! :view_all_workloads
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [@group1.id, @group2.id, @group3.id])
|
||||
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
expected = @group_member_ids.flatten.sort
|
||||
current = users.send(:all_users).map(&:id).sort
|
||||
assert_equal expected, current
|
||||
end
|
||||
|
||||
test 'should return users of the current users groups when allowed to :view_own_group_workloads' do
|
||||
current_user = users :users_002 # jsmith
|
||||
current_user.groups << @group1
|
||||
current_user.groups << @group3
|
||||
|
||||
current_user.create_wl_user_data(default_attributes.merge(main_group: @group1.id))
|
||||
assert_equal @group1.id, current_user.wl_user_data.main_group
|
||||
|
||||
manager = roles :roles_001 # manager
|
||||
manager.add_permission! :view_own_group_workloads
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [@group1.id, @group2.id, @group3.id])
|
||||
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
expected = [@user1, @user3].map(&:id).sort
|
||||
current = users.allowed_to_display.map(&:id).sort
|
||||
assert_equal expected, current
|
||||
end
|
||||
|
||||
test 'should return the current user if allowed to :view_own_workloads' do
|
||||
current_user = users :users_002 # jsmith
|
||||
manager = roles :roles_001 # manager
|
||||
manager.add_permission! :view_own_workloads
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [@group1.id, @group2.id, @group3.id])
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
assert_equal [current_user.id], users.allowed_to_display.map(&:id)
|
||||
end
|
||||
|
||||
test 'should return an empty array if the current user has no permission to view workloads' do
|
||||
current_user = User.anonymous
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [@group1.id, @group2.id, @group3.id])
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
|
||||
assert_equal [], users.allowed_to_display
|
||||
end
|
||||
|
||||
test 'should return current user if no other users given' do
|
||||
current_user = users :users_002 # jsmith
|
||||
manager = roles :roles_001 # manager
|
||||
manager.add_permission! :view_all_workloads
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [])
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
expected = [current_user]
|
||||
current = users.send(:include_current_user)
|
||||
assert_equal expected, current
|
||||
end
|
||||
|
||||
test 'should not return current user if not selected' do
|
||||
@user1.create_wl_user_data(default_attributes.merge(main_group: @group1.id))
|
||||
current_user = users :users_002 # jsmith
|
||||
manager = roles :roles_001 # manager
|
||||
manager.add_permission! :view_all_workloads
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [@group1.id, @group2.id, @group3.id])
|
||||
users = WlUserSelection.new(user: current_user, group_selection: groups)
|
||||
expected = []
|
||||
current = users.send(:include_current_user)
|
||||
assert_equal expected, current
|
||||
|
||||
groups = WlGroupSelection.new(user: current_user, groups: [])
|
||||
users = WlUserSelection.new(user: current_user, users: [@user1.id, @user2.id, @user3.id], group_selection: groups)
|
||||
expected = []
|
||||
current = users.send(:include_current_user)
|
||||
assert_equal expected, current
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user