From 6b2df287bd02033fbc219f83dcd698eb414a4756 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 21 Oct 2026 11:18:02 +0800 Subject: [PATCH] test(return): align parcel counts and physical carton assertions --- .../return-boundary-scenarios-contract.test.mjs | 2 +- .../return-boundary-scenarios.mjs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs b/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs index 527ebe52d..ace25d8fc 100644 --- a/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs +++ b/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs @@ -118,7 +118,7 @@ test('真实退货验收使用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('/^BX-[0-9A-Z]+$/')) assert.ok(source.includes('同键并发合箱后重试仍返回原箱')) assert.ok(source.includes('签收重放不重复产生流水')) }) diff --git a/scripts/admin-test-env-modules/return-boundary-scenarios.mjs b/scripts/admin-test-env-modules/return-boundary-scenarios.mjs index 883b474b8..9e72bc719 100644 --- a/scripts/admin-test-env-modules/return-boundary-scenarios.mjs +++ b/scripts/admin-test-env-modules/return-boundary-scenarios.mjs @@ -262,11 +262,12 @@ export async function runReturnBoundaries(context, { merchantToken, warehouse, p check('三件库存同时各取两件仅一次成功', partialResponses[0], partialOutcome.successes === 1 && partialOutcome.conflicts === 1 && partialOutcome.unexpected === 0, JSON.stringify(partialOutcome)) const [partialState] = await snapshot([partial]) + // PARCEL 不计纸箱数;剩余包裹和新 BOX 是两个库存单元,但只有一个纸箱。 check('并发部分合箱保持原箱一件新箱两件总量三件', null, Number(partialState.cartons.total) === 2 && rows(partialState.cartons).every(row => row.status === 'AVAILABLE') && rows(partialState.cartons).some(row => row.cartonMark === partial.cartonMark && Number(row.totalQuantity) === 1) && rows(partialState.cartons).some(row => row.cartonMark !== partial.cartonMark && Number(row.totalQuantity) === 2) - && rows(partialState.summary).some(row => row.skuCode === partial.sku && Number(row.availableQuantity) === 3 && Number(row.cartonQuantity) === 2)) + && rows(partialState.summary).some(row => row.skuCode === partial.sku && Number(row.availableQuantity) === 3 && Number(row.cartonQuantity) === 1)) } }) @@ -309,7 +310,7 @@ export async function runReturnBoundaries(context, { merchantToken, warehouse, p ...mergeBody([order], skuA, 1), items: [{ skuCode: skuA, quantity: 1 }, { skuCode: secondSku, quantity }] }), [409]) } const [state] = await snapshot([order]) - check('混合失败后两SKU均保持两件且各自一个来源箱', null, Number(state.cartons.total) === 2 + check('混合失败后两SKU各两件且保留同一原包裹', null, Number(state.cartons.total) === 1 && [state.summary, ...state.additionalSummaries].every(page => rows(page).length === 1 && Number(rows(page)[0].availableQuantity) === 2)) }) @@ -321,11 +322,11 @@ export async function runReturnBoundaries(context, { merchantToken, warehouse, p const responses = await Promise.all([1, 2].map(() => request(picker.token, 'POST', MERGE, body))) for (const [index, response] of responses.entries()) check(`同键并发合箱请求${index + 1}成功`, response, ok(response)) check('同键并发合箱复用同一目标箱', responses[0], responses.every(ok) - && /^RC-[0-9A-Z]{25}$/.test(responses[0].body.data?.cartonMark) && responses[0].body.data.cartonMark === responses[1].body.data.cartonMark) + && /^BX-[0-9A-Z]+$/.test(responses[0].body.data?.cartonMark) && responses[0].body.data.cartonMark === responses[1].body.data.cartonMark) const [state] = await snapshot([order]) check('同键并发合箱只扣一次且原箱新箱各一件', null, Number(state.cartons.total) === 2 && rows(state.cartons).every(row => Number(row.totalQuantity) === 1 && row.status === 'AVAILABLE') - && rows(state.summary).some(row => row.skuCode === order.sku && Number(row.availableQuantity) === 2 && Number(row.cartonQuantity) === 2)) + && rows(state.summary).some(row => row.skuCode === order.sku && Number(row.availableQuantity) === 2 && Number(row.cartonQuantity) === 1)) const original = responses.find(ok)?.body.data?.cartonMark const replay = await request(picker.token, 'POST', MERGE, body) check('同键并发合箱后重试仍返回原箱', replay, ok(replay) && Boolean(original) && replay.body.data?.cartonMark === original) @@ -355,7 +356,7 @@ export async function runReturnBoundaries(context, { merchantToken, warehouse, p skuCode: sku, overseasWarehouseId: order.warehouseId, page: 1, size: 20 })) check('同码库存只返回当前客户当前仓的准确数量', null, Number(data.total) === 1 && rows(data).length === 1 && rows(data)[0].skuCode === sku && String(rows(data)[0].overseasWarehouseId) === String(order.warehouseId) - && Number(rows(data)[0].availableQuantity) === order.quantity && Number(rows(data)[0].cartonQuantity) === 1) + && Number(rows(data)[0].availableQuantity) === order.quantity && Number(rows(data)[0].cartonQuantity) === 0) } for (const [token, expected] of [[merchantToken, [a, c]], [tokenB, [b]]]) { const data = await good(token, 'GET', '客户按同码查询自己全部退货单', url(ORDERS, { skuCode: sku, page: 1, size: 20 }))