import test from 'node:test' import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import ts from 'typescript' const source = readFileSync(new URL('./WarehouseServiceView.vue', import.meta.url), 'utf8') const functions = source.slice(source.indexOf('function transferCartonItem('), source.indexOf("const detailError = ref('')")) const code = ts.transpileModule(functions, { compilerOptions: { target: ts.ScriptTarget.ES2022 } }).outputText const load = selectedDetail => new Function('selectedDetail', `${code}; return { transferCartonLines, palletSkuRows, palletQuantity, receivedItemCartons, receivedItemQuantity };`)(selectedDetail) test('mixed carton detail and pallet summaries preserve every SKU without duplicating boxes', () => { const mixed = { status: 'COUNTED', transferItemId: '1', transferPalletId: '9', quantity: 10, items: [{ transferItemId: '1', skuCode: 'A', quantity: 3 }, { transferItemId: '2', skuCode: 'B', quantity: 7 }] } const display = load({ value: { items: [{ id: '1', skuCode: 'A', productNameZh: '产品A' }, { id: '2', skuCode: 'B', productNameZh: '产品B' }], cartons: [mixed, { ...mixed, status: 'NOT_RECEIVED', quantity: 999 }] } }) assert.equal(display.transferCartonLines(mixed).length, 2) assert.equal(display.transferCartonLines(mixed)[1].productNameZh, '产品B') assert.deepEqual(display.palletSkuRows({ id: '9' }), [{ sku: 'A', quantity: 3 }, { sku: 'B', quantity: 7 }]) assert.equal(display.palletQuantity({ id: '9' }), 10) assert.equal(display.receivedItemQuantity('1'), 3) assert.equal(display.receivedItemQuantity('2'), 7) assert.equal(display.receivedItemCartons('2').length, 1) })