优化
This commit is contained in:
@@ -25,7 +25,7 @@ test('fee writes use verified Firstleg paths and do not fabricate historical IDs
|
||||
assert.match(source, /const basePath = `\/api\/platform\/v1\/loading-plans\//)
|
||||
assert.match(source, /sourceType: detail\?\.sourceType \|\| 'MANUAL'/)
|
||||
assert.match(source, /created\?\.marker === context\.marker/)
|
||||
assert.match(source, /\/fees`/)
|
||||
assert.match(source, /fee-details\?accountId=/)
|
||||
assert.match(source, /chargeUnit === 'KG'/)
|
||||
assert.match(source, /chargeUnit === 'CBM'/)
|
||||
})
|
||||
@@ -65,7 +65,7 @@ function hookSet({ missing = false } = {}) {
|
||||
loadSupplier: async () => missing ? null : ({ id: 'PARTNER-1', partnerName: '往来单位一', status: 'ACTIVE' }),
|
||||
uploadVoucher: async () => missing ? null : 'VOUCHER-1',
|
||||
verifyContainerCostSnapshotInput: async () => ({ valid: true, items: [{ accountId: '701', orderId: 'O-AUTO1', volumeCbm: 0.072 }] }),
|
||||
calculateAutomaticFee: async (context, resource) => {
|
||||
loadPublishedAutomaticFee: async (context, resource) => {
|
||||
automaticIndex += 1
|
||||
const weight = automaticIndex % 2 === 1
|
||||
return { feeSourceId: `F-${automaticIndex}`, orderId: resource.orderId, inboundId: resource.inboundId,
|
||||
@@ -162,6 +162,40 @@ test('manual fee approval path keeps accountId as a query parameter', () => {
|
||||
assert.doesNotMatch(source, /fee-details\?accountId=\$\{encodeURIComponent\(resource\.tenantId\)\}`\)/)
|
||||
})
|
||||
|
||||
test('automatic fixture reuses the published review-chain source without recalculating at WAIT_SPLIT', () => {
|
||||
assert.match(source, /loadPublishedAutomaticFee/)
|
||||
assert.match(source, /sourceType === 'FBA_PRICING'/)
|
||||
assert.match(source, /reviewStatus === 'APPROVED'/)
|
||||
assert.match(source, /publicationStatus === 'PUBLISHED'/)
|
||||
assert.match(source, /settlementIncluded === true/)
|
||||
assert.match(source, /const feeSourceId = id\(published\.sourceFeeId\)/)
|
||||
assert.doesNotMatch(source, /\/fees\/calculate/)
|
||||
assert.doesNotMatch(source, /\/fees\/confirm/)
|
||||
assert.doesNotMatch(source, /\/fees\/send/)
|
||||
})
|
||||
|
||||
test('missing published automatic source is a prerequisite blocker and never emits a fixture source', async () => {
|
||||
const context = fakeContext()
|
||||
let automaticReads = 0
|
||||
context.financeFixtureHooks = {
|
||||
...hookSet(),
|
||||
loadPublishedAutomaticFee: async (ctx, resource) => {
|
||||
automaticReads += 1
|
||||
ctx.addStep('finance-full-fixtures', '审核链已生成可结算自动费用来源', null, false,
|
||||
`inboundId=${resource.inboundId}; fixture 不重复试算/确认/发布`, { deploymentBlocker: true })
|
||||
return null
|
||||
},
|
||||
}
|
||||
|
||||
await run(context)
|
||||
|
||||
assert.equal(automaticReads, 4)
|
||||
assert.equal(context.createdResources.financeFullFixtures.feeSources
|
||||
.filter((item) => item.sourceType === 'FBA_PRICING').length, 0)
|
||||
assert.ok(context.steps.some((step) => step.deploymentBlocker
|
||||
&& step.name.includes('可结算自动费用来源')))
|
||||
})
|
||||
|
||||
test('fixture creates four real receivable manual sources before payable source', () => {
|
||||
assert.match(source, /const receivableResources = measured\.slice\(0, 4\)/)
|
||||
assert.match(source, /feeItems\.RECEIVABLE, 'RECEIVABLE'/)
|
||||
|
||||
Reference in New Issue
Block a user