fix(client): correct return inventory carton paging and label printing

This commit is contained in:
2026-09-12 16:16:40 +08:00
parent bee47f1a6c
commit 61a562b828
8 changed files with 201 additions and 23 deletions
+33
View File
@@ -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\)/)
})