This commit is contained in:
2026-10-20 10:35:52 +08:00
parent ce189f062f
commit c13175bf77
202 changed files with 38397 additions and 7138 deletions
@@ -1,6 +1,7 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import { verifyFleetBookingReservation } from './fleet-booking-reservation-acceptance.mjs'
import { verifyFleetBookingReservation, testPlannedCapacity } from './fleet-booking-reservation-acceptance.mjs'
import { controlledPalletMeasurements } from './fleet-trip-fulfillment.mjs'
function fixture(fault = '') {
const baseline = [
@@ -71,16 +72,12 @@ function fixture(fault = '') {
return result(booking)
},
}
const measurements = (actual, stops) => {
assert.deepEqual(actual, cargo); assert.deepEqual(stops, tripProof.stops)
return cargo.map((row, index) => ({ warehousePalletId: row.warehousePalletId, palletSpaces: 1, weightKg: 100, volumeCbm: 1, deliveryIndex: index + 1 }))
}
return { context, tripProof, measurements, calls, bookings, assertions }
return { context, tripProof, cargo, calls, bookings, assertions }
}
test('reservation HTTP helper verifies actual segments, original requests and cancellation without receiving or charging', async () => {
const f = fixture()
const proof = await verifyFleetBookingReservation(f.context, 'fleet-test', f.tripProof, f.measurements)
const proof = await verifyFleetBookingReservation(f.context, 'fleet-test', f.tripProof)
assert.equal(proof.status, 'VERIFIED')
assert.equal(proof.bookings.length, 2)
assert.ok(f.bookings.every(row => row.status === 'CANCELLED'))
@@ -89,13 +86,14 @@ test('reservation HTTP helper verifies actual segments, original requests and ca
assert.ok(f.assertions.every(row => row.passed && row.options.deploymentBlocker))
assert.ok(f.calls.every(row => !/incoming|receipt-confirmation|transfer-delivery|departure/.test(row.suffix)))
assert.equal(proof.createRequest.customerId, '900719925474099301')
await assert.rejects(() => verifyFleetBookingReservation(f.context, 'fleet-test', f.tripProof, f.measurements), /本轮新建/)
assert.equal(proof.planningBasis.kind, 'CONTROLLED_TEST_PLAN'); assert.equal(proof.planningBasis.actual, false)
await assert.rejects(() => verifyFleetBookingReservation(f.context, 'fleet-test', f.tripProof), /本轮新建/)
})
for (const fault of ['wrong-segment', 'replay-reoccupies', 'cancel-does-not-release', 'fake-loaded', 'missing-trace', 'wrong-conflict']) {
test(`reservation helper fails closed on ${fault} even when HTTP reports success`, async () => {
const f = fixture(fault)
await assert.rejects(() => verifyFleetBookingReservation(f.context, 'fleet-test', f.tripProof, f.measurements))
await assert.rejects(() => verifyFleetBookingReservation(f.context, 'fleet-test', f.tripProof))
assert.equal(f.tripProof.reservation.status, 'CHECKING')
assert.ok(f.assertions.some(row => !row.passed && row.options.deploymentBlocker))
if (['wrong-segment', 'replay-reoccupies'].includes(fault)) assert.equal(f.calls.some(row => row.suffix.endsWith('/cancel')), false)
@@ -104,6 +102,16 @@ for (const fault of ['wrong-segment', 'replay-reoccupies', 'cancel-does-not-rele
test('reservation helper rejects foreign fixture before making any request', async () => {
const f = fixture()
await assert.rejects(() => verifyFleetBookingReservation(f.context, 'fleet-test', { ...f.tripProof }, f.measurements), /本轮新建/)
await assert.rejects(() => verifyFleetBookingReservation(f.context, 'fleet-test', { ...f.tripProof }), /本轮新建/)
assert.equal(f.calls.length, 0)
})
test('planned capacity counts a cross-customer physical pallet once and cannot be treated as actual measurement', () => {
const f = fixture(), first = f.cargo[0]
const planned = testPlannedCapacity([first, { ...first, customerId: 'OTHER-CUSTOMER' }], f.tripProof.stops)
assert.equal(planned.length, 1); assert.equal(planned[0].warehousePalletId, first.warehousePalletId)
assert.throws(() => controlledPalletMeasurements(planned, f.tripProof.stops), /实际预览|实际托盘/)
assert.throws(() => testPlannedCapacity([first, { ...first, destinationKey: 'FBA:B' }], f.tripProof.stops), /不同计划卸货站/)
assert.throws(() => testPlannedCapacity([{ ...first, warehousePalletId: null }], f.tripProof.stops), /缺少真实/)
assert.throws(() => testPlannedCapacity([first], [{ name: 'Origin' }]), /唯一路线/)
})