test(fba): add scoped transfer lifecycle and remaining-node evidence helpers
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import { test } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { requirePassed, selectSteps, transferConclusion } from './fba-remaining-nodes-acceptance.mjs'
|
||||
|
||||
test('missing and partially failed evidence cannot close a branch', () => {
|
||||
assert.equal(requirePassed([]), false)
|
||||
assert.equal(requirePassed([{ passed: true }, { passed: false }]), false)
|
||||
assert.equal(requirePassed([{ passed: true }, {}]), false)
|
||||
assert.equal(requirePassed([{ passed: true }]), true)
|
||||
})
|
||||
test('approved stock transfer and a signed unrelated order do not prove transfer receipt', () => {
|
||||
assert.equal(transferConclusion({ status: 'APPROVED', orderStatus: 'DELIVERED' }).completed, false)
|
||||
assert.equal(transferConclusion({ status: 'RECEIVED' }).completed, false)
|
||||
assert.equal(transferConclusion({ status: 'OUTBOUNDED', actualShipAt: '2026-10-04' }).completed, false)
|
||||
assert.equal(transferConclusion({ status: 'RECEIVED', actualShipAt: '2026-10-04', allocations: [{ status: 'RECEIVED', destinationInventoryPositionId: '42' }] }).completed, true)
|
||||
})
|
||||
test('selection keeps exact original JSON pointer and failure evidence', () => {
|
||||
const rows = selectSteps({ steps: [{ name: 'other', passed: true }, { name: 'original', passed: false }] }, s => s.name === 'original')
|
||||
assert.deepEqual(rows, [{ pointer: '/steps/1', name: 'original', passed: false }])
|
||||
})
|
||||
Reference in New Issue
Block a user