test: verify manual inbound unit price flow

This commit is contained in:
2026-09-09 18:34:07 +08:00
parent 0d016bc5fc
commit 1c4f35f61c
2 changed files with 11 additions and 2 deletions
@@ -27,4 +27,7 @@ test('inbound fee lifecycle covers frozen source, version, publication and WAIT_
test('automatic fee adjustment confirms the ten percent tolerance boundary', async () => {
const source = await readFile(moduleFile, 'utf8')
assert.match(source, /reason: `\$\{context\.marker\}-自动费用版本调整`, toleranceConfirmed: true/)
assert.match(source, /adjustedUnitPrice = Number\(\(Math\.max\(0, money\(initial\.unitPrice\)\) \+ 0\.37\)\.toFixed\(4\)\)/)
assert.match(source, /人工对客单价写入最新费用版本/)
assert.match(source, /money\(published\?\.unitPrice\) === adjustedUnitPrice/)
})
@@ -66,7 +66,7 @@ export async function run(context) {
}
const adjustedQuantity = Math.max(0.0001, money(initial.chargeableQuantity) + 0.01)
const adjustedUnitPrice = Math.max(0, money(initial.unitPrice))
const adjustedUnitPrice = Number((Math.max(0, money(initial.unitPrice)) + 0.37).toFixed(4))
const adjustedAdditional = money(initial.additionalAmount) + 0.01
const adjustResponse = await context.request('PUT',
`/api/platform/v1/inbounds/${encodeURIComponent(inboundId)}/fees/published?tenantId=${encodeURIComponent(tenantId)}`,
@@ -79,6 +79,9 @@ export async function run(context) {
Number(adjusted?.feeVersion) > Number(initial.feeVersion) && adjusted?.feeStatus === 'CALCULATED'
&& adjusted?.nextProcessStatus === 'WAIT_SPLIT' && money(adjusted?.totalAmount) >= adjustedAdditional,
`oldVersion=${initial.feeVersion}, newVersion=${adjusted?.feeVersion ?? 'missing'}, status=${adjusted?.feeStatus || 'missing'}, process=${adjusted?.nextProcessStatus || 'missing'}`, OPTIONS)
context.assert(MODULE, '人工对客单价写入最新费用版本', adjustResponse,
money(adjusted?.unitPrice) === adjustedUnitPrice,
`referenceUnitPrice=${initial.unitPrice ?? 'missing'}, selectedUnitPrice=${adjustedUnitPrice}, persistedUnitPrice=${adjusted?.unitPrice ?? 'missing'}`, OPTIONS)
if (!adjusted?.feeId) { finish(context, start); return }
const adjustedDetails = await listDetails(context, tenantId, inboundId, '回查调整后的派生详情版本')
@@ -108,7 +111,10 @@ export async function run(context) {
&& id(row.sourceFeeId) === id(sent?.feeId))
context.assert(MODULE, '仅人工发布后费用为 SENT 且派生明细为 PUBLISHED', sendResponse,
sent?.feeStatus === 'SENT' && sent?.nextProcessStatus === 'WAIT_SPLIT'
&& published?.publicationStatus === 'PUBLISHED' && published?.reviewStatus === 'APPROVED',
&& money(sent?.unitPrice) === adjustedUnitPrice
&& published?.publicationStatus === 'PUBLISHED' && published?.reviewStatus === 'APPROVED'
&& money(published?.unitPrice) === adjustedUnitPrice
&& money(published?.amount) === money(sent?.totalAmount),
`status=${sent?.feeStatus || 'missing'}, process=${sent?.nextProcessStatus || 'missing'}, publication=${published?.publicationStatus || 'missing'}`, OPTIONS)
const feeItemsResponse = await context.request('GET', '/api/platform/v1/fee-items?page=1&size=200&status=ACTIVE')