优化
This commit is contained in:
@@ -3,15 +3,15 @@ import assert from 'node:assert/strict'
|
||||
import { pickDispatchItem, pickOutboundTask, pickOutboundPallet, confirmCargoDiscard } from '../src/api/fulfillment.js'
|
||||
import { session } from '../src/stores/session.js'
|
||||
|
||||
// 模拟当前生产:仓租预检查接口不存在,既有库存命令仍正常受理。
|
||||
// 排车拣货先完成仓租预校验,再提交同一份库存命令。
|
||||
function transport(failure) {
|
||||
const calls = []
|
||||
session.apiBase = '/api'; session.token = 'overseas-token'
|
||||
globalThis.uni = { request(options) {
|
||||
calls.push({ method: options.method, url: options.url, data: options.data })
|
||||
if (failure?.network) return options.fail({ errMsg: 'network down' })
|
||||
const error = options.url.includes('/storage-rent/') ? { code: 'A0404', message: 'Resource not found' } : failure
|
||||
options.success({ statusCode: 200, data: error || { code: '200', data: { success: true } }, header: {} })
|
||||
const rent = options.url.includes('/storage-rent/')
|
||||
options.success({ statusCode: 200, data: rent ? { code: '200', data: { preparationId: 'rent-1', ready: true, status: 'READY' } } : failure || { code: '200', data: { success: true } }, header: {} })
|
||||
} }
|
||||
return calls
|
||||
}
|
||||
@@ -27,18 +27,20 @@ const modes = [
|
||||
]
|
||||
|
||||
for (const mode of modes) {
|
||||
test(`${mode.name} works without the unpublished rent endpoint and preserves its stock payload`, async () => {
|
||||
test(`${mode.name} preserves its stock payload`, async () => {
|
||||
const calls = transport()
|
||||
await mode.submit()
|
||||
assert.deepEqual(calls, [{ method: 'POST', url: '/api/pda/v1/last-leg' + mode.path, data: mode.body }])
|
||||
const stock = calls.find(call => call.url.includes(mode.path))
|
||||
assert.deepEqual(stock, { method: 'POST', url: '/api/pda/v1/last-leg' + mode.path, data: mode.body })
|
||||
if (mode.name === 'dispatch') assert.equal(calls.filter(call => call.url.includes('/storage-rent/')).length, 1)
|
||||
})
|
||||
test(`${mode.name} propagates stock failures without fallback or automatic resubmission`, async () => {
|
||||
for (const failure of [{ code: 'A0404', message: 'missing' }, { code: 'A0409', message: 'conflict' }, { code: 'S0503', message: 'unavailable' }, { network: true }]) {
|
||||
const calls = transport(failure)
|
||||
await assert.rejects(mode.submit(), error => failure.network ? error.network === true : error.code === failure.code)
|
||||
assert.equal(calls.length, 1)
|
||||
assert.equal(calls[0].url, '/api/pda/v1/last-leg' + mode.path)
|
||||
assert.deepEqual(calls[0].data, mode.body)
|
||||
const stock = calls.find(call => call.url.includes(mode.path))
|
||||
if (failure.network && mode.name === 'dispatch') assert.equal(stock, undefined)
|
||||
else assert.deepEqual(stock, { method: 'POST', url: '/api/pda/v1/last-leg' + mode.path, data: mode.body })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user