81 lines
2.9 KiB
TypeScript
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)
|
|
})
|
|
})
|