Files
order_site/apps/frontend/tests/consignment-internal-match-display.test.ts
T
zhaoxing 0dff00de97 寄卖手动匹配改走内部现货并统一展示与超时口径
- 手动匹配不再指派供货打手:停在待加好友,清空截止时间与超时分钟
- 物品名模板去掉「0 璀璨」残留;寄卖单号无提报号时回退库存编号
- 状态列按寄卖库存显示内部匹配,打手列保留供货打手标签
- 超时配置增加启用开关,默认关闭(不限时)
- 补充前后端回归测试
2026-11-14 13:15:41 +08:00

98 lines
3.7 KiB
TypeScript

import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import { fileURLToPath } from 'node:url'
import test from 'node:test'
import type { WorkOrder } from '../src/types/worker-platform.ts'
import {
isConsignmentStockOrder,
isInternalConsignmentOrder,
resolveConsignmentWorkerDisplay,
} from '../src/utils/consignment-display.ts'
function readPanel(name: string) {
return readFileSync(
fileURLToPath(new URL(`../src/pages/admin/panels/${name}`, import.meta.url)),
'utf8',
)
}
test('内部匹配展示:押金履约也算寄卖库存匹配', () => {
const deposit = {
material: {
consignment: { inventoryId: 12, fulfillmentType: 'worker_deposit', workerId: 7 },
},
}
assert.equal(isConsignmentStockOrder(deposit), true)
assert.equal(
isConsignmentStockOrder({ material: { consignment: { inventoryNo: 'INV1' } } }),
true,
)
assert.equal(isConsignmentStockOrder({ material: {} }), false)
assert.equal(
isInternalConsignmentOrder(deposit),
false,
'操作判定仍按原口径,不影响加好友文案与撤销入口',
)
})
test('内部匹配展示:供货打手 id 会随展示信息返回', () => {
const display = resolveConsignmentWorkerDisplay({
material: { consignment: { inventoryId: 1, workerId: 7, workerName: '苏尔南2号' } },
} as unknown as WorkOrder)
assert.equal(display?.tagText, '供货打手')
assert.equal(display?.workerId, 7)
assert.equal(display?.primaryName, '苏尔南2号')
})
test('手动匹配内部现货:workerName 只是供货人快照,不算接单打手', () => {
const manualMatched = {
material: {
consignment: {
inventoryId: 88,
inventoryNo: 'INV20261113001',
sourceSubmissionNo: 'SUB20261113001',
fulfillmentType: 'internal_stock',
workerName: '苏尔南2号小号',
},
},
}
// 撤销寄卖入口依赖「没有接单打手」这一口径,供货人快照不能把它挡掉
assert.equal(isInternalConsignmentOrder(manualMatched), true)
assert.equal(isConsignmentStockOrder(manualMatched), true)
const display = resolveConsignmentWorkerDisplay(manualMatched as unknown as WorkOrder)
assert.equal(display?.tagText, '供货打手')
assert.equal(display?.primaryName, '苏尔南2号小号')
assert.equal(display?.workerId, null)
})
test('工单列表:内部匹配标签用展示口径,打手列保留供货打手', () => {
const orders = readPanel('WorkOrdersPanel.tsx')
assert.ok(orders.includes('isConsignmentStockOrder(row)'), '状态列必须用寄卖库存展示判定')
assert.ok(
orders.includes("return info.sourceSubmissionNo || info.inventoryNo || ''"),
'寄卖单号必须回退库存编号',
)
const utils = readFileSync(
fileURLToPath(new URL('../src/pages/admin/panels/work-order-panel-utils.tsx', import.meta.url)),
'utf8',
)
assert.ok(utils.includes('supplierId === assignedId'), '接单人就是供货打手时必须保留供货打手标签')
assert.ok(
utils.includes('供货打手:${consignmentDisplay.primaryName}'),
'指派其他打手时必须补一行供货打手信息',
)
})
test('配置面板:超时开关默认关闭,关闭即不限时', () => {
const panel = readPanel('ConsignmentConfigPanel.tsx')
assert.ok(panel.includes("name={['timeout', 'enabled']}"), '超时设置必须有启用开关')
assert.ok(
panel.includes("timeout: { enabled: false, hours: 0.5, policy: 'reopen' }"),
'新建配置默认不限时',
)
assert.ok(panel.includes('minutes: values.timeout.enabled'), '保存时必须按开关决定 0 或分钟')
assert.ok(panel.includes('默认关闭(不限时)'), '配置区文案必须说明默认不限时')
})