22 lines
1.6 KiB
JavaScript
22 lines
1.6 KiB
JavaScript
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)
|
|
})
|