Files
knowledge-governance/web/src/qaRegionSelection.test.ts
T
2026-10-18 21:50:29 +08:00

35 lines
1.4 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { applyBulkRegionRules, departmentLevels } from './qaRegionSelection'
import type { DepartmentRegion } from './qaOrg'
describe('department multi-selection', () => {
it('applies only explicitly selected IDs without deleting child overrides or mutating saved rules', () => {
const saved = [
{ department_id: 'child', region: 'west' },
{ department_id: 'sibling', region: 'education' },
]
const draft = applyBulkRegionRules(saved, ['parent', 'other', 'parent'], 'education')
expect(draft).toEqual([
...saved,
{ department_id: 'parent', region: 'education' },
{ department_id: 'other', region: 'education' },
])
expect(saved).toHaveLength(2)
expect(applyBulkRegionRules(draft, [], 'west')).toEqual(draft)
})
it('derives every hierarchy level from parent IDs, not slashes in names or a three-level cutoff', () => {
const departments = Array.from({ length: 5 }, (_, i) => ({
id: String(i),
parent_id: i ? String(i - 1) : '',
name: `部门/${i}`,
path: '',
region: '',
explicit: false,
inherited_from: '',
})) as DepartmentRegion[]
expect(departmentLevels(departments, '4')).toEqual(departments.map((d) => d.name))
expect(() =>
departmentLevels([...departments, { ...departments[0], id: 'cycle', parent_id: 'cycle' }], 'cycle')
).toThrow()
})
})