From 58fa0c7133c7fd4bc5d6da3508aca4eac63bd803 Mon Sep 17 00:00:00 2001 From: WuYongJie Date: Fri, 21 Aug 2026 11:47:16 +0800 Subject: [PATCH] test(users): cover permission role activation --- .../__tests__/user-management.service.test.ts | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/furniture-3d-system/src/server/services/__tests__/user-management.service.test.ts b/furniture-3d-system/src/server/services/__tests__/user-management.service.test.ts index 94b02002..2ee142cc 100644 --- a/furniture-3d-system/src/server/services/__tests__/user-management.service.test.ts +++ b/furniture-3d-system/src/server/services/__tests__/user-management.service.test.ts @@ -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',