fix(client): correct return inventory carton paging and label printing
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFile } from 'node:fs/promises'
|
||||
import test from 'node:test'
|
||||
import ts from 'typescript'
|
||||
|
||||
const source = await readFile(new URL('./types.ts', import.meta.url), 'utf8')
|
||||
const compiled = ts.transpileModule(source, {
|
||||
compilerOptions: { module: ts.ModuleKind.ESNext, target: ts.ScriptTarget.ES2022 },
|
||||
}).outputText
|
||||
const { isApiFailure, isApiEnvelope } = await import(`data:text/javascript;base64,${Buffer.from(compiled).toString('base64')}`)
|
||||
|
||||
test('recognizes a security failure without data and preserves diagnostics', () => {
|
||||
const failure = { code: 'A0403', message: 'Access denied', requestId: 'request-1', traceId: 'trace-1' }
|
||||
assert.equal(isApiFailure(failure), true)
|
||||
assert.equal(isApiEnvelope(failure), false)
|
||||
assert.equal(failure.requestId, 'request-1')
|
||||
assert.equal(failure.traceId, 'trace-1')
|
||||
})
|
||||
|
||||
test('does not accept malformed or data-less successful responses', () => {
|
||||
for (const value of [null, {}, { code: 403, message: 'Denied' }, { code: 'A0403' },
|
||||
{ code: 'A0403', message: 'Denied', traceId: {} }, { code: '200', message: 'OK' }]) {
|
||||
assert.equal(isApiFailure(value), false)
|
||||
}
|
||||
assert.equal(isApiEnvelope({ code: '200', message: 'OK' }), false)
|
||||
assert.equal(isApiEnvelope({ code: '200', message: 'OK', data: [] }), true)
|
||||
})
|
||||
|
||||
test('overseas transport handles business-code and HTTP security failures', async () => {
|
||||
const transport = await readFile(new URL('./overseasHttp.ts', import.meta.url), 'utf8')
|
||||
assert.match(transport, /if \(isApiFailure\(response.data\)\)/)
|
||||
assert.match(transport, /isApiEnvelope\(body\) \|\| isApiFailure\(body\)/)
|
||||
})
|
||||
Reference in New Issue
Block a user