gongxiangp2/lib/__tests__/auto-personnel-rules.test.ts
chenpei 83cb88c991 feat: 组织架构按在职显示,并修正人数与兼任
默认只显示花名册在职人员。树上人数与点进去名单一致,去掉重复累加。一人多部门在每个任职部门都显示。
2026-08-19 21:54:30 +08:00

39 lines
1.5 KiB
TypeScript

import {
isRosterEmployed,
selectVisibleOrganizationPeople,
shouldAutoActivate,
} from '@/lib/auto-personnel-rules'
describe('花名册在职判定', () => {
it('只有明确离职才不算在职', () => {
expect(isRosterEmployed('RESIGNED')).toBe(false)
expect(isRosterEmployed('ACTIVE')).toBe(true)
expect(isRosterEmployed('UNKNOWN')).toBe(true)
expect(isRosterEmployed(null)).toBe(true)
expect(isRosterEmployed(undefined)).toBe(true)
})
it('自动激活跟花名册在职走同一口径', () => {
expect(shouldAutoActivate({ employmentState: 'RESIGNED' })).toBe(false)
expect(shouldAutoActivate({ employmentState: 'UNKNOWN' })).toBe(true)
expect(shouldAutoActivate(null)).toBe(false)
})
it('组织架构默认名单不带离职的人,也不看账号是否还启用', () => {
const people = [
{ name: '在职且账号启用', employmentState: 'ACTIVE', isActive: true },
{ name: '离职但账号还没归档', employmentState: 'RESIGNED', isActive: true },
{ name: '离职且账号已关', employmentState: 'RESIGNED', isActive: false },
{ name: '在职但账号停用', employmentState: 'ACTIVE', isActive: false },
{ name: '状态未知', employmentState: 'UNKNOWN', isActive: true },
]
expect(selectVisibleOrganizationPeople(people).map((p) => p.name)).toEqual([
'在职且账号启用',
'在职但账号停用',
'状态未知',
])
expect(selectVisibleOrganizationPeople(people, true)).toHaveLength(5)
})
})