fix(client): render estimated sailing fields from unified orders

This commit is contained in:
2026-09-28 07:45:57 +08:00
parent 8c8fdbc2ab
commit 983df11081
6 changed files with 38 additions and 11 deletions
@@ -1,11 +1,32 @@
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import test from 'node:test'
import { runInNewContext } from 'node:vm'
import ts from 'typescript'
const storeSource = readFileSync(new URL('./firstLegOrders.ts', import.meta.url), 'utf8')
const apiSource = readFileSync(new URL('../api/firstLeg.ts', import.meta.url), 'utf8')
const unifiedApiSource = readFileSync(new URL('../api/unifiedOrders.ts', import.meta.url), 'utf8')
test('renders estimated sailing from the current API without substituting actual departure', () => {
const mapper = storeSource.slice(storeSource.indexOf('function businessSummary('), storeSource.indexOf('\nconst unifiedActionLabels'))
const javascript = ts.transpileModule(mapper, { compilerOptions: { target: ts.ScriptTarget.ES2022 } }).outputText
const map = runInNewContext(`${javascript}; businessSummary`)
const transport = {
vesselName: 'REASSIGNED', voyageNo: 'V02',
estimatedSailingAt: '2026-10-07T08:00:00', actualSailingAt: '2026-10-08T09:00:00',
effectiveSailingAt: '2026-10-08T09:00:00', effectiveSailingAtEstimated: false,
estimatedPortArrivalAt: '2026-10-27T08:00:00', actualPortArrivalAt: null,
}
const mapped = map({ transport })
assert.equal(mapped.estimatedSailingAt, transport.estimatedSailingAt)
assert.equal(mapped.estimatedPortArrivalAt, transport.estimatedPortArrivalAt)
assert.equal(mapped.vesselName, 'REASSIGNED')
assert.equal(mapped.voyageNo, 'V02')
assert.equal(map().estimatedSailingAt, '')
assert.equal(map({ transport: null }).estimatedPortArrivalAt, '')
})
test('maps the first-leg aggregate list fields without loading detail rows', () => {
assert.match(apiSource, /interface MerchantFirstLegOrderRow/)
assert.match(apiSource, /skuNos: string \| string\[\] \| null/)
@@ -220,8 +220,8 @@ function businessSummary(summary?: MerchantUnifiedOrderRow): FirstLegOrder['busi
cabinetNo: summary?.transport?.cabinetNo ?? '',
vesselName: summary?.transport?.vesselName ?? '',
voyageNo: summary?.transport?.voyageNo ?? '',
sailingAt: summary?.transport?.sailingAt ?? '',
portArrivalAt: summary?.transport?.portArrivalAt ?? '',
estimatedSailingAt: summary?.transport?.estimatedSailingAt ?? '',
estimatedPortArrivalAt: summary?.transport?.estimatedPortArrivalAt ?? '',
inboundId: summary?.inboundId == null ? '' : String(summary.inboundId),
inboundVersion: summary?.inboundVersion ?? null,
inboundCode: summary?.inboundCode ?? '',