26 lines
1.8 KiB
JavaScript
26 lines
1.8 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import { readFileSync } from 'node:fs'
|
|
import ts from 'typescript'
|
|
const source = readFileSync(new URL('./orderProgress.ts', import.meta.url), 'utf8')
|
|
const code = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS } }).outputText
|
|
const exports = {}
|
|
new Function('exports', code)(exports)
|
|
test('prototype queues preserve order and distinguish partial progress from completion', () => {
|
|
assert.deepEqual(exports.ORDER_QUEUES.slice(0, 7).map(q => q.key), ['all','fee','loaded','declared','cleared','scheduled','delivering'])
|
|
assert.equal(exports.orderProgressLabel({ stage: 'scheduled', partial: true }), '部分已排车')
|
|
assert.equal(exports.orderProgressLabel({ stage: 'cleared', partial: false }), '已清关')
|
|
assert.equal(exports.orderProgressLabel({ stage: 'none', partial: false }), '—')
|
|
assert.equal(exports.orderProgressLabel(), '—')
|
|
})
|
|
|
|
test('detail progress must belong to the requested order and retain partial fulfillment', () => {
|
|
const progress = { orderId: '2110663764278312961', stage: 'scheduled', partial: true }
|
|
assert.equal(exports.requireOrderProgress(progress.orderId, progress), progress)
|
|
assert.equal(exports.orderProgressLabel(exports.requireOrderProgress(progress.orderId, progress)), '部分已排车')
|
|
assert.throws(() => exports.requireOrderProgress('other-order', progress), /订单履约进度不完整/)
|
|
assert.throws(() => exports.requireOrderProgress(progress.orderId, undefined), /订单履约进度不完整/)
|
|
assert.throws(() => exports.requireOrderProgress(progress.orderId, { ...progress, stage: 'UNKNOWN' }), /订单履约进度不完整/)
|
|
assert.throws(() => exports.requireOrderProgress(progress.orderId, { ...progress, partial: null }), /订单履约进度不完整/)
|
|
})
|