test(firstleg): make trucking acceptance self-contained

This commit is contained in:
2026-09-01 10:16:07 +08:00
parent 477971dda1
commit 505188c3fd
2 changed files with 143 additions and 77 deletions
@@ -49,11 +49,16 @@ test('backend freezes released booking real container bill file and carrier rule
}
})
test('HTTP regression covers no-customer response and submit idempotency matrix', () => {
test('HTTP regression is self-contained and covers no-customer and idempotency matrix', () => {
const source = readFileSync(new URL('truck-appointments.mjs', import.meta.url), 'utf8')
for (const label of ['响应不含客户字段且冻结订舱柜号关系', '同键同载荷重放', '提交幂等重放零漂移',
'同键异载荷拒绝', '提单号与订舱不一致拒绝创建']) assert.match(source, new RegExp(label))
assert.doesNotMatch(source, /customerId\s*:|customerName\s*:|独立拖车/)
for (const label of ['自包含创建 DRAFT 订舱', '上传当前有效 BILL_OF_LADING 文件', '放舱自包含订舱',
'绑定本轮真实 ISO 柜号', '拖车请求不含客户字段', '同柜第二条非终态预约拒绝且零漂移',
'同键同载荷重放', '同键重放版本零漂移', '同键异载荷拒绝', '错误订舱拒绝创建',
'错误柜号归属拒绝创建', '错误提单拒绝创建', '错误承运商拒绝创建']) assert.match(source, new RegExp(label))
assert.doesNotMatch(source, /phase3ContainerLoading|phase3Loading/)
const entry = readFileSync(new URL('../admin-test-env-acceptance.mjs', import.meta.url), 'utf8')
assert.match(entry, /\['truck-appointments', \['merchant-qualification-fixture'\]\]/)
assert.doesNotMatch(entry, /\['truck-appointments', \[[^\]]*phase3-loading/)
})
test('schema owns platform attachments and one active appointment per real container', () => {