Files

35 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2026-09-30 17:13:11 +08:00
import test from 'node:test'
import assert from 'node:assert/strict'
import { cargoRequirementNegativeCases } from './orders.mjs'
const payload = { destinationType: 'FBA', fulfillmentType: 'STANDARD', customsInspection: true,
shipmentId: 'SHIP-1', cargoes: [{ skuNo: 'SKU-1', packageCount: 2, unitsPerPackage: 3,
totalQuantity: 6, referenceId: 'TRACK-1', woodenProduct: false, lengthCm: 10, packingGroupNo: 'GROUP-1' }] }
test('FBA negatives independently remove order identifiers and per-line identifiers without mutating source', () => {
const before = structuredClone(payload)
const cases = cargoRequirementNegativeCases(payload)
assert.equal(cases.length, 5)
assert.equal(cases.find(item => item.name.includes('订单货件')).body.shipmentId, null)
assert.equal(cases.find(item => item.name.includes('逐行跟踪')).body.cargoes[0].referenceId, null)
assert.deepEqual(payload, before)
})
test('overseas and private standard paths retain destination type and common declaration constraints', () => {
for (const destinationType of ['OVERSEAS', 'PRIVATE']) {
const cases = cargoRequirementNegativeCases({ ...payload, destinationType })
assert.equal(cases.length, 3)
assert.ok(cases.every(item => item.body.destinationType === destinationType))
assert.ok(cases.every(item => !item.name.startsWith('FBA')))
}
})
test('dropship checks required SKU and inconsistent physical carton grouping', () => {
const cases = cargoRequirementNegativeCases({ ...payload, destinationType: 'OVERSEAS', fulfillmentType: 'ONE_CLICK_DROPSHIP' })
assert.equal(cases.length, 5)
assert.equal(cases.find(item => item.name.includes('缺少SKU')).body.cargoes[0].skuNo, null)
const mixed = cases.find(item => item.name.includes('混箱')).body.cargoes
assert.equal(mixed[0].packingGroupNo, mixed[1].packingGroupNo)
assert.notEqual(mixed[0].lengthCm, mixed[1].lengthCm)
})