Merge branch 'release/test' of http://git.buggoglobal.com/html/pda-overseas-uniapp into release/test

This commit is contained in:
2026-11-05 14:53:59 +08:00
5 changed files with 39 additions and 19 deletions
+19 -9
View File
@@ -67,7 +67,7 @@ test('final photo upload waits for explicit confirmation and failed uploads cann
assert.equal(requests.length, 0)
await page.confirmReceipt()
assert.equal(requests.length, failUpload ? 0 : 1)
if (failUpload) assert.match(page.error.message, /照片/)
if (failUpload) assert.equal(page.error.message, 'upload failed')
}
})
@@ -96,13 +96,23 @@ test('parcel photos accumulate without submitting until explicit receipt confirm
assert.equal(page.current, null)
})
test('parcel signing requires a photo even for a partial receipt', async () => {
let requests = 0
const page = setup(async () => { requests++; return {} })
page.unitType = 'PARCEL'; page.boxRows = [physicalRow({ 'SKU-TEST': 2 })]
await page.confirmReceipt()
assert.equal(requests, 0)
assert.match(page.error.message, /照片/)
test('missing receipt photos show a reminder without submitting or adding a page error', async () => {
for (const type of ['BOX', 'PARCEL', 'PALLET']) {
let requests = 0
const modals = []
const page = setup(async () => { requests++; return {} }, new Map(), 'operator:warehouse', {
uni: { showModal: options => modals.push(options) }
})
page.unitType = type; page.boxRows = [physicalRow({ 'SKU-TEST': 10 })]
page.quantity = () => 10; page.remaining = () => 10
await page.confirmReceipt()
assert.equal(requests, 0)
assert.equal(modals.length, 1)
assert.match(modals[0].content, /照片/)
assert.equal(modals[0].showCancel, false)
assert.equal(page.error, undefined)
assert.ok(page.current)
}
})
test('editing the draft before the camera returns prevents late photo submission', async () => {
@@ -123,7 +133,7 @@ function setup(confirm, saved = new Map(), scope = 'operator:warehouse', runtime
const context = vm.createContext({ reactive: value => value, ReturnLabelConfirmation: {}, PortalHeader: {}, ScanTargetInput: {}, ExceptionReturnWork: {},
playSuccessSound() {}, playErrorSound() {}, confirmReturnReceipt: confirm,
...runtime,
uni: { setStorageSync: (key, value) => saved.set(key, structuredClone(value)), getStorageSync: key => saved.get(key), removeStorageSync: key => saved.delete(key), ...runtime.uni } })
uni: { showModal() {}, setStorageSync: (key, value) => saved.set(key, structuredClone(value)), getStorageSync: key => saved.get(key), removeStorageSync: key => saved.delete(key), ...runtime.uni } })
const store = readFileSync(new URL('../src/stores/warehouse-work.js', import.meta.url), 'utf8')
vm.runInContext(store.replace(/^import .*$/mg, '').replace(/export /g, ''), context)
const page = readFileSync(new URL('../src/pages/return-receipt/return-receipt.vue', import.meta.url), 'utf8')
@@ -300,3 +300,9 @@ test('新增预报箱无SKU绑定时恢复为可编辑箱,保留已有草稿',
assert.ok(added)
assert.ok(value.declaredSkuCodes.includes(added.items[0].skuCode))
})
test('warehouse transfer errors show guidance without diagnostic identifiers', () => {
const { value: page } = setup()
assert.equal(page.simpleErrorMessage({message:'该单为仓库上门取货,请先完成车辆取货送仓\nrequestId: request-1'}), '该单为仓库上门取货,请先完成车辆取货送仓')
assert.equal(page.simpleErrorMessage({message:'操作失败(错误码:S0503;requestId:request-1;traceId:trace-1)'}), '操作失败')
})