fix(pda): discard failed ordinary photo drafts
This commit is contained in:
@@ -90,3 +90,33 @@ test('photo failure releases the page and another click uploads the current phot
|
||||
assert.equal(state.evidenceUploading, false); assert.equal(requests[1][3], 'new.jpg'); assert.equal(requests[1][2].sealNo, 'NEW')
|
||||
assert.notEqual(requests[1][2].operationId, requests[0][2].operationId)
|
||||
})
|
||||
|
||||
test('failed ordinary photo is removed from the visible and restored draft without deleting saved evidence', async () => {
|
||||
const uploadMethod = page.slice(page.indexOf('async queueEvidenceUpload('), page.indexOf('async saveSealNo('))
|
||||
const draftMethods = page.slice(page.indexOf('evidenceDraftKey(identity)'), page.indexOf('requireEvidenceCapture() {'))
|
||||
const behavior = new Function('isRemoteReady', 'uploadEvidenceFile', 'return ({' + draftMethods + uploadMethod + '})')(
|
||||
() => true, async () => { throw new Error('upload failed') }
|
||||
)
|
||||
const saved = { id: 'saved-photo', fileId: 'saved-file', localPath: 'saved.jpg' }
|
||||
const failed = { localPath: 'failed.jpg', uploadStatus: 'PENDING' }
|
||||
const seal = { localPath: 'seal.jpg', uploadStatus: 'PENDING' }
|
||||
const state = {
|
||||
...behavior, evidenceUploading: false, evidenceReadOnly: false,
|
||||
evidenceIdentity: { taskId: 'task', warehouseId: 'warehouse' }, evidenceContextId: 1,
|
||||
evidenceQueueItems: [], evidenceDrafts: {}, sealNo: 'SEAL-A',
|
||||
evidenceFiles: { PHOTO_STEP_1: [saved, failed], SEAL: [seal] },
|
||||
validEvidenceEntries: () => [saved], isEvidenceContextActive: () => true,
|
||||
remoteFailureMessage: error => error.message, showToast() {}
|
||||
}
|
||||
state.rememberEvidenceDraft()
|
||||
await state.queueEvidenceUpload('PHOTO_STEP_1', 'failed.jpg')
|
||||
assert.deepEqual(state.evidenceFiles.PHOTO_STEP_1, [saved])
|
||||
assert.equal(state.evidenceUploading, false)
|
||||
assert.equal(state.remoteError, 'upload failed')
|
||||
state.restoreEvidenceDraft()
|
||||
assert.equal(state.evidenceFiles.PHOTO_STEP_1, undefined)
|
||||
assert.deepEqual(state.evidenceFiles.SEAL, [seal])
|
||||
await state.queueEvidenceUpload('SEAL', 'seal.jpg', 'SEAL-A')
|
||||
assert.deepEqual(state.evidenceFiles.SEAL, [seal])
|
||||
assert.equal(state.evidenceUploading, false)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user