优化
This commit is contained in:
@@ -37,7 +37,8 @@ test('schedule interleaves three modes and uses FBA cumulative count rather than
|
||||
assert.throws(() => mixedReceivingSchedule(fixtures().slice(0, 2)))
|
||||
})
|
||||
|
||||
function driver({ earlyComplete = false, wrongModeAccepted = false, drift = false } = {}) {
|
||||
function driver({ earlyComplete = false, wrongModeAccepted = false, drift = false, repeatIncrement = false,
|
||||
changedPayloadAccepted = false } = {}) {
|
||||
const group = fixtures()
|
||||
const expected = new Map(group.map(r => [r.source.inboundCode, 0]))
|
||||
const schedule = mixedReceivingSchedule(group)
|
||||
@@ -50,7 +51,14 @@ function driver({ earlyComplete = false, wrongModeAccepted = false, drift = fals
|
||||
inbounds: [...expected].map(([inboundCode, receivedPackages]) => ({ inboundCode, totalPackages: 4,
|
||||
receivedPackages, pendingPackages: 4 - receivedPackages })) })
|
||||
return { group, marker: 'MIXED-TEST', check: (name, _response, passed) => assert.ok(passed, name),
|
||||
request: async (_method, path) => ({ body: { code: (path.endsWith('/complete') ? earlyComplete : wrongModeAccepted) ? '200' : 'A0409' } }),
|
||||
request: async (_method, path, body) => {
|
||||
if (body.idempotencyKey.endsWith('-duplicate')) {
|
||||
return { body: path.endsWith('/carton') ? { code: 'A0409' }
|
||||
: { code: '200', data: { result: 'ALREADY_RECEIVED', acceptedPackages: repeatIncrement ? 1 : 0 } } }
|
||||
}
|
||||
if (seen.has(body.idempotencyKey)) return { body: { code: changedPayloadAccepted ? '200' : 'A0409' } }
|
||||
return { body: { code: (path.endsWith('/complete') ? earlyComplete : wrongModeAccepted) ? '200' : 'A0409' } }
|
||||
},
|
||||
call: async (_name, method, path, body) => {
|
||||
if (method === 'GET') return snapshot()
|
||||
if (seen.has(body.idempotencyKey)) return structuredClone(seen.get(body.idempotencyKey))
|
||||
@@ -82,3 +90,9 @@ test('mixed receiving fails if overseas or dropship can bypass pallet/carton rec
|
||||
test('mixed receiving detects correct aggregate count allocated to the wrong inbound', async () => {
|
||||
await assert.rejects(receiveMixedContainer(driver({ drift: true })))
|
||||
})
|
||||
test('mixed receiving rejects a new-key rescan that accepts another box', async () => {
|
||||
await assert.rejects(receiveMixedContainer(driver({ repeatIncrement: true })))
|
||||
})
|
||||
test('mixed receiving rejects same-key different-payload success', async () => {
|
||||
await assert.rejects(receiveMixedContainer(driver({ changedPayloadAccepted: true })))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user