|
@@ -588,6 +588,34 @@ describe('public team background upload page state machine', () => {
|
|
|
expect(failed).toMatchObject({ status: 'success', progress: 100, error: '' })
|
|
expect(failed).toMatchObject({ status: 'success', progress: 100, error: '' })
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+ test('does not upload a pending batch item removed while an earlier item is active', async () => {
|
|
|
|
|
+ if (!expectPage(source)) return
|
|
|
|
|
+ const firstRequest = deferred()
|
|
|
|
|
+ api.uploadPublicTeamBackgroundFile
|
|
|
|
|
+ .mockReturnValueOnce(firstRequest.promise)
|
|
|
|
|
+ .mockResolvedValue({ code: 0, data: {} })
|
|
|
|
|
+ const vm = createPageVm(api, {
|
|
|
|
|
+ state: 'ready',
|
|
|
|
|
+ session: { uploadToken: 'upload-token' }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const batch = vm.handleFileChange({
|
|
|
|
|
+ target: { files: [{ name: 'first.pdf', size: 1 }, { name: 'removed.pdf', size: 1 }] }
|
|
|
|
|
+ })
|
|
|
|
|
+ const removedItem = vm.queue[1]
|
|
|
|
|
+ expect(api.uploadPublicTeamBackgroundFile).toHaveBeenCalledTimes(1)
|
|
|
|
|
+ expect(removedItem).toMatchObject({ name: 'removed.pdf', status: 'pending' })
|
|
|
|
|
+
|
|
|
|
|
+ vm.removeQueueItem(removedItem)
|
|
|
|
|
+ expect(vm.queue).not.toContain(removedItem)
|
|
|
|
|
+
|
|
|
|
|
+ firstRequest.resolve({ code: 0, data: {} })
|
|
|
|
|
+ await batch
|
|
|
|
|
+
|
|
|
|
|
+ expect(api.uploadPublicTeamBackgroundFile).toHaveBeenCalledTimes(1)
|
|
|
|
|
+ expect(vm.queue).not.toContain(removedItem)
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
test('a session-level upload failure expires the page and stops later files in the batch', async () => {
|
|
test('a session-level upload failure expires the page and stops later files in the batch', async () => {
|
|
|
if (!expectPage(source)) return
|
|
if (!expectPage(source)) return
|
|
|
api.uploadPublicTeamBackgroundFile.mockRejectedValue({ msg: '上传会话已过期' })
|
|
api.uploadPublicTeamBackgroundFile.mockRejectedValue({ msg: '上传会话已过期' })
|