Files
BIPMaterialManager/tests/unit/cleaner-helpers.test.ts

74 lines
1.8 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
buildDeletionPlan,
buildExportItems,
filterValidationResults
} from '../../src/renderer/src/hooks/cleaner/helpers'
import type { ValidationResult } from '../../src/renderer/src/hooks/cleaner/types'
const sampleResults: ValidationResult[] = [
{
materialName: 'A',
materialCode: 'M1',
specification: '',
model: '',
managerName: 'alice',
isMarkedForDeletion: true
},
{
materialName: 'B',
materialCode: 'M2',
specification: '',
model: '',
managerName: '',
isMarkedForDeletion: false
},
{
materialName: 'C',
materialCode: 'M3',
specification: '',
model: '',
managerName: 'bob',
isMarkedForDeletion: false
}
]
describe('cleaner helpers', () => {
it('filters results for non-admin users and hidden items', () => {
const filtered = filterValidationResults({
validationResults: sampleResults,
isAdmin: false,
currentUsername: 'alice',
managers: [],
selectedManagers: new Set(),
hiddenItems: new Set(['M2'])
})
expect(filtered.map((item) => item.materialCode)).toEqual(['M1'])
})
it('builds deletion plan with missing managers', () => {
const plan = buildDeletionPlan(sampleResults, new Set(['M1', 'M2']))
expect(plan.materialsToUpsert).toEqual([{ materialCode: 'M1', managerName: 'alice' }])
expect(plan.materialsToDelete).toEqual(['M3'])
expect(plan.missingManager).toEqual(['M2'])
})
it('builds export items with selection state', () => {
const items = buildExportItems(sampleResults.slice(0, 1), new Set(['M1']))
expect(items).toEqual([
{
materialName: 'A',
materialCode: 'M1',
specification: '',
model: '',
managerName: 'alice',
isMarkedForDeletion: true,
isSelected: true
}
])
})
})