test(numbering): align return fixtures with receipt contract

This commit is contained in:
2026-10-21 11:01:24 +08:00
parent 91b6574d53
commit 4d12b56cac
2 changed files with 9 additions and 4 deletions
@@ -112,11 +112,13 @@ test('流水断言逐行核对归属和业务引用,不能仅凭合计相等
assert.equal(exactReceiptLedger(undefined, []), false)
})
test('真实退货验收检查五类完整编号且保留同键重放检查', async () => {
test('真实退货验收使用TH及RR和RB日流水并保留原箱码与重放检查', async () => {
const source = await readFile(new URL('return-boundary-scenarios.mjs', import.meta.url), 'utf8')
for (const prefix of ['RT', 'RETU', 'RR', 'RB', 'RC']) {
assert.ok(source.includes(`/^${prefix}-[0-9A-Z]{25}$/`), prefix)
for (const prefix of ['TH', 'RR', 'RB']) {
assert.ok(source.includes(`/^${prefix}[0-9]{12}$/`), prefix)
}
assert.ok(source.includes('data.order.lastlegOrderNo === data.order.returnNo'))
assert.ok(source.includes('/^RC-[0-9A-Z]{25}$/'))
assert.ok(source.includes('同键并发合箱后重试仍返回原箱'))
assert.ok(source.includes('签收重放不重复产生流水'))
})
@@ -108,7 +108,10 @@ export async function runReturnBoundaries(context, { merchantToken, warehouse, p
return { returnNo: data.order.returnNo, sku, skus: items.map(item => item.skuCode), quantity, token, warehouseId, unitCode: `PKG-${data.order.returnNo}` }
}
function receiptBody(order, quantity = order.quantity, idempotencyKey = key('RECEIPT')) {
return { returnNo: order.returnNo, startedBy: 'RETURN_NO', unitType: 'PARCEL', unitCode: order.unitCode, items: [{ skuCode: order.sku, receivedQuantity: quantity }], idempotencyKey }
// 合成包裹明确原包装选择与实测输入,使边界场景进入待验证的库存/并发规则。
return { returnNo: order.returnNo, startedBy: 'RETURN_NO', unitType: 'PARCEL', unitCode: order.unitCode,
originalPackaging: true, length: 30, width: 20, height: 10, weight: 2,
items: [{ skuCode: order.sku, receivedQuantity: quantity }], idempotencyKey }
}
async function receive(order, operator = picker) {
const data = await good(operator.token, 'POST', '准备边界场景实收库存', `${RECEIPTS}/confirm`, receiptBody(order))