test(users): cover permission role activation

This commit is contained in:
WuYongJie 2026-08-21 11:47:16 +08:00
parent e5985cf4cd
commit 58fa0c7133

View File

@ -4,6 +4,7 @@ import { logRepository } from '../../repositories/log.repository'
import { userService } from '../user.service'
import { departmentService } from '../department.service'
import { externalEmployeeDirectoryService } from '../external-employee-directory.service'
import { permissionRoleService } from '../permission-role.service'
jest.mock('../../repositories/log.repository', () => ({
logRepository: {
@ -33,11 +34,18 @@ jest.mock('../external-employee-directory.service', () => ({
},
}))
jest.mock('../permission-role.service', () => ({
permissionRoleService: {
assertAssignable: jest.fn(),
},
}))
describe('userManagementService.activateUser', () => {
const mockedLogRepository = jest.mocked(logRepository)
const mockedUserService = jest.mocked(userService)
const mockedDepartmentService = jest.mocked(departmentService)
const mockedExternalEmployeeDirectoryService = jest.mocked(externalEmployeeDirectoryService)
const mockedPermissionRoleService = jest.mocked(permissionRoleService)
const adminUser = {
id: 'admin-1',
@ -115,6 +123,7 @@ describe('userManagementService.activateUser', () => {
expect(mockedUserService.update).toHaveBeenCalledWith('user-pending', {
role: 'USER',
businessRoles: ['DESIGN'],
permissionRoleId: null,
departmentId: 'dept-a',
teamId: null,
status: 'ACTIVE',
@ -160,6 +169,7 @@ describe('userManagementService.activateUser', () => {
expect(mockedUserService.update).toHaveBeenCalledWith('user-pending', {
role: 'USER',
businessRoles: ['DESIGN'],
permissionRoleId: null,
departmentId: 'dept-a',
teamId: null,
status: 'ACTIVE',
@ -168,6 +178,47 @@ describe('userManagementService.activateUser', () => {
expect(result.businessRoles).toEqual(['DESIGN'])
})
it('激活时选择自定义岗位会清空旧业务类型并写入岗位关联', async () => {
mockedUserService.getById.mockResolvedValue({
id: 'user-pending',
email: 'pending@example.com',
name: '待激活用户',
role: 'USER',
businessRoles: ['DESIGN'],
permissionRoleId: null,
status: 'PENDING',
departmentId: 'dept-a',
teamId: null,
} as never)
mockedUserService.update.mockResolvedValue({
id: 'user-pending',
email: 'pending@example.com',
name: '待激活用户',
role: 'USER',
businessRoles: [],
permissionRoleId: 'role-custom-1',
status: 'ACTIVE',
departmentId: 'dept-a',
teamId: null,
} as never)
await userManagementService.activateUser(
'user-pending',
{ businessRoles: ['DESIGN'], permissionRoleId: 'role-custom-1' },
adminUser,
)
expect(mockedPermissionRoleService.assertAssignable).toHaveBeenCalledWith('role-custom-1')
expect(mockedUserService.update).toHaveBeenCalledWith('user-pending', {
role: 'USER',
businessRoles: [],
permissionRoleId: 'role-custom-1',
departmentId: 'dept-a',
teamId: null,
status: 'ACTIVE',
})
})
it('主管不能把待激活账号激活成同级角色', async () => {
mockedUserService.getById.mockResolvedValue({
id: 'user-pending',