GuDingZiChan/frontend/scripts/test-borrow-manual-search.ts
WuYongJie 0dc3c09315 feat(资产与打印): 提交近期借还盘点与打印助手源码
- 提交借用单缺失异常处理、扫码借还搜索与站内消息快捷处理源码
- 提交盘点范围、多终端打印、组织同步与认证模式相关源码
- 提交 .NET/Node 打印助手及版本清单源码
2026-03-27 20:18:31 +08:00

79 lines
3.0 KiB
TypeScript

import assert from 'node:assert/strict'
import {
filterManualBorrowCandidates,
findPreferredManualBorrowCandidate,
isManualBorrowCandidate
} from '../src/views/borrow/manualBorrowSearch.ts'
const sampleList = [
{
equipment_code: 'JS-PC-1001',
equipment_name: '设计部高配主机',
equipment_model: 'RTX4090-WORKSTATION',
equipment_type: '主机',
status: '可用',
remaining_quantity: 1,
parent_id: null,
storageLocation: { name: '设计中心-A区' }
},
{
equipment_code: 'JS-PC-1002',
equipment_name: '普通办公主机',
equipment_model: 'OFFICE-01',
equipment_type: '主机',
status: '可用',
remaining_quantity: 2,
parent_id: null,
storageLocation: { name: '行政办公室' }
},
{
equipment_code: 'JS-MEM-2001',
equipment_name: '内存条',
equipment_model: '32G DDR5',
equipment_type: '内存条',
status: '可用',
remaining_quantity: 1,
parent_id: 88,
storageLocation: { name: '设计中心-A区' }
},
{
equipment_code: 'JS-MON-3001',
equipment_name: '曲面显示器',
equipment_model: '34WQHD',
equipment_type: '显示器',
status: '已借出',
remaining_quantity: 0,
parent_id: null,
storageLocation: { name: '摄影棚' }
}
]
assert.equal(isManualBorrowCandidate(sampleList[0]), true, '独立且可用的资产应允许手动借出搜索')
assert.equal(isManualBorrowCandidate(sampleList[2]), false, '已挂载子资产不应出现在借出搜索中')
assert.equal(isManualBorrowCandidate(sampleList[3]), false, '已借出资产不应出现在借出搜索中')
const byCode = filterManualBorrowCandidates(sampleList, 'JS-PC-1002')
assert.equal(byCode.length, 1, '按准确编码搜索应只返回该资产')
assert.equal(byCode[0].equipment_code, 'JS-PC-1002', '准确编码搜索必须命中目标资产')
const byKeyword = filterManualBorrowCandidates(sampleList, '设计')
assert.equal(byKeyword.length, 1, '按名称关键词搜索应排除不可借资产')
assert.equal(byKeyword[0].equipment_code, 'JS-PC-1001', '名称关键词应返回正确资产')
const byModel = filterManualBorrowCandidates(sampleList, '4090')
assert.equal(byModel[0].equipment_code, 'JS-PC-1001', '型号关键词应支持搜索')
const byLocation = filterManualBorrowCandidates(sampleList, '行政')
assert.equal(byLocation[0].equipment_code, 'JS-PC-1002', '地址关键词应支持辅助定位')
const preferredExact = findPreferredManualBorrowCandidate(byCode, 'js-pc-1002')
assert.equal(preferredExact?.equipment_code, 'JS-PC-1002', '精确编码时应优先自动选中')
const preferredSingle = findPreferredManualBorrowCandidate(byKeyword, '设计')
assert.equal(preferredSingle?.equipment_code, 'JS-PC-1001', '只有一条结果时应允许直接读取')
const multipleResults = filterManualBorrowCandidates(sampleList, '主机')
assert.equal(findPreferredManualBorrowCandidate(multipleResults, '主机'), null, '多条结果时不应擅自自动选中')
console.log('borrow manual search tests: ok')