test(firstleg): cover simulated container booking links
This commit is contained in:
@@ -130,30 +130,33 @@ test('PDA inventory snapshot gates batch and records the only safe mutation gap'
|
||||
assert.match(convergence, /fixture\?\.inventoryMutationVerified !== true/)
|
||||
})
|
||||
|
||||
test('container loading creates and confirms booking before scoped candidates', () => {
|
||||
test('container loading arranges a simulation before linking a confirmed real booking', () => {
|
||||
const value = source('./phase3-container-loading.mjs')
|
||||
assert.match(value, /candidates\.find\(\(candidate\) => candidate\.marker === context\.marker\)/)
|
||||
assertOrder(value, [
|
||||
"const bookingCreate = await request",
|
||||
"const submit = await request",
|
||||
"const confirm = await request",
|
||||
"const simulationResponse = await request(context, 'POST', CONTAINERS",
|
||||
"const candidateResponse = await context.request('GET', `${SMART}/candidates?bookingId=",
|
||||
"const planResponse = await request(context, 'POST', `${SMART}/plans`",
|
||||
"const assignResponse = await request",
|
||||
"const bookingCreate = await request",
|
||||
"const submit = await request",
|
||||
"const confirm = await request",
|
||||
"const linkResponse = await request(context, 'POST', `${CONTAINERS}/${containerId}/ocean-booking-link`",
|
||||
])
|
||||
assert.match(value, /channelCode, warehouseId, warehouseName/)
|
||||
assert.match(value, /publishPlatformLogisticsChannels\(context, warehouseId, MODULE\)/)
|
||||
assert.match(value, /warehouseId, warehouseName/)
|
||||
const draft = value.slice(value.indexOf('const bookingDraft = {'), value.indexOf('context.assert(MODULE, \'订舱渠道与仓库快照完整\''))
|
||||
assert.doesNotMatch(draft, /billOfLadingNo|vesselName|voyageNo|estimatedSailingAt|estimatedArrivalAt/)
|
||||
assert.match(value, /containerAllocations\?\.\[0\]/)
|
||||
assert.match(value, /containerAllocations\.length === 0/)
|
||||
assert.match(value, /关联前后内部柜次、计划和排货明细身份稳定/)
|
||||
assert.match(value, /bookingId=\$\{encodeURIComponent\(containerId\)\}&warehouseId=/)
|
||||
assert.match(value, /tasks\?loadingPlanId=\$\{encodeURIComponent\(planId\)\}&warehouseId=/)
|
||||
assert.match(value, /loadingPlanId: planId, containerBookingId: containerId/)
|
||||
assert.ok(value.includes("'PATCH', `${CONTAINERS}/${containerId}/transport"))
|
||||
assert.match(value, /在放舱前绑定本轮真实箱号/)
|
||||
assert.match(value, /订舱放舱并开放现场 PDA 任务/)
|
||||
assert.doesNotMatch(value, /POST', CONTAINERS, containerPayload/)
|
||||
assert.match(value, /POST', CONTAINERS/)
|
||||
})
|
||||
|
||||
test('container loading selects the current marker instead of a stale CAB fixture', () => {
|
||||
@@ -220,9 +223,11 @@ test('channel isolation reports BLOCKED_FIXTURE instead of inventing a second ch
|
||||
test('container loading enforces channel isolation and stable PDA identity across container number changes', () => {
|
||||
const value = source('./phase3-container-loading.mjs')
|
||||
assertOrder(value, [
|
||||
'确认订舱并自动生成真实柜次',
|
||||
'创建真实异渠道隔离订舱',
|
||||
'新增内部模拟柜',
|
||||
'新增真实异渠道模拟柜',
|
||||
'两个真实有效渠道之间拒绝跨渠道装柜',
|
||||
'人工分配本轮候选货物',
|
||||
'首次关联真实已确认订舱柜',
|
||||
'无真实柜号时计划可排柜但 PDA 任务不开放',
|
||||
'在放舱前绑定本轮真实箱号',
|
||||
'订舱 CONFIRMED 即使已有真实柜号也不开放 PDA 任务',
|
||||
|
||||
Reference in New Issue
Block a user