Files
pda-uniapp/tests/dropship-palletizing-state.test.mjs

29 lines
1.7 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { readFile } from 'node:fs/promises'
const source = await readFile(new URL('../utils/dropship-palletizing-state.js', import.meta.url), 'utf8')
const state = await import(`data:text/javascript;base64,${Buffer.from(source).toString('base64')}`)
test('pallet first selects the pallet and later carton resolution carries it', () => {
let scanState = state.createDropshipScanState()
let plan = state.planDropshipScan(scanState, 'dp-260908-0001')
assert.equal(plan.intent, state.DROPSHIP_SCAN_INTENT.SELECT_PALLET)
scanState = state.releaseDropshipScan(plan.state)
plan = state.planDropshipScan(scanState, 'box-001')
assert.deepEqual({ intent: plan.intent, boxCode: plan.boxCode, palletNo: plan.palletNo }, { intent: state.DROPSHIP_SCAN_INTENT.RESOLVE_CARTON, boxCode: 'BOX-001', palletNo: 'DP-260908-0001' })
})
test('boxes first requests batch binding when a pallet is scanned with pending cartons', () => {
const plan = state.planDropshipScan(state.createDropshipScanState(), 'DP-260908-0002', { unboundCartons: 3 })
assert.equal(plan.intent, state.DROPSHIP_SCAN_INTENT.BIND_PENDING)
assert.equal(plan.palletNo, 'DP-260908-0002')
})
test('offline, empty, and immediate repeated scans are blocked before API intent', () => {
assert.equal(state.planDropshipScan(state.createDropshipScanState({ online: false }), 'BOX-001').intent, state.DROPSHIP_SCAN_INTENT.BLOCKED)
assert.equal(state.planDropshipScan(state.createDropshipScanState(), ' ').intent, state.DROPSHIP_SCAN_INTENT.INVALID)
const first = state.planDropshipScan(state.createDropshipScanState(), 'BOX-001')
assert.equal(state.planDropshipScan(first.state, 'BOX-001').intent, state.DROPSHIP_SCAN_INTENT.DUPLICATE)
})