gongxiangp2/lib/__tests__/work-review-review-mode.test.ts
2026-08-13 12:23:23 +08:00

81 lines
2.9 KiB
TypeScript

import {
getPendingWorkReviewRoles,
getRequiredWorkReviewRoles,
getWorkReviewReminderSequence,
WORK_REVIEW_REVIEW_ROLES,
} from '@/lib/work-review-review-mode'
describe('作品过稿评审模式', () => {
const originalEnv = { ...process.env }
afterEach(() => {
process.env = { ...originalEnv }
jest.restoreAllMocks()
})
test('正常作品需要指定评审人和元泽共同评审', () => {
delete process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_PROJECT_ID
delete process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_MANAGER_EMPLOYEE_ID
delete process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_EXPIRES_AT
expect(getRequiredWorkReviewRoles({ id: 'project-1', managerEmployeeId: 'manager-1' })).toEqual([
WORK_REVIEW_REVIEW_ROLES.MANAGER,
WORK_REVIEW_REVIEW_ROLES.FINAL_REVIEWER,
])
})
test('有效测试配置仅提醒指定评审人', () => {
process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_PROJECT_ID = 'project-1'
process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_MANAGER_EMPLOYEE_ID = 'manager-1'
process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_EXPIRES_AT = '2099-01-01T00:00:00.000Z'
expect(getRequiredWorkReviewRoles({ id: 'project-1', managerEmployeeId: 'manager-1' })).toEqual([
WORK_REVIEW_REVIEW_ROLES.MANAGER,
])
})
test('过期测试配置恢复双人评审', () => {
process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_PROJECT_ID = 'project-1'
process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_MANAGER_EMPLOYEE_ID = 'manager-1'
process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_EXPIRES_AT = '2020-01-01T00:00:00.000Z'
expect(getRequiredWorkReviewRoles({ id: 'project-1', managerEmployeeId: 'manager-1' })).toHaveLength(2)
})
test('每小时提醒只保留尚未操作的评审人', () => {
delete process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_PROJECT_ID
delete process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_MANAGER_EMPLOYEE_ID
delete process.env.WORK_REVIEW_SINGLE_REVIEW_TEST_EXPIRES_AT
expect(getPendingWorkReviewRoles(
{ id: 'project-1', managerEmployeeId: 'manager-1' },
[WORK_REVIEW_REVIEW_ROLES.MANAGER],
)).toEqual([WORK_REVIEW_REVIEW_ROLES.FINAL_REVIEWER])
expect(getPendingWorkReviewRoles(
{ id: 'project-1', managerEmployeeId: 'manager-1' },
[WORK_REVIEW_REVIEW_ROLES.MANAGER, WORK_REVIEW_REVIEW_ROLES.FINAL_REVIEWER],
)).toEqual([])
})
test('提交满一小时后才进入对应的小时提醒序号', () => {
const submittedAt = new Date('2026-08-13T00:00:00.000Z')
expect(getWorkReviewReminderSequence(
submittedAt,
new Date('2026-08-13T00:59:59.999Z'),
)).toBeNull()
expect(getWorkReviewReminderSequence(
submittedAt,
new Date('2026-08-13T01:00:00.000Z'),
)).toBe(1)
expect(getWorkReviewReminderSequence(
submittedAt,
new Date('2026-08-13T01:59:59.999Z'),
)).toBe(1)
expect(getWorkReviewReminderSequence(
submittedAt,
new Date('2026-08-13T02:00:00.000Z'),
)).toBe(2)
})
})