diff --git a/packages/components/upload/__tests__/upload.test.tsx b/packages/components/upload/__tests__/upload.test.tsx index 9595afa0d6..21a7b733d2 100644 --- a/packages/components/upload/__tests__/upload.test.tsx +++ b/packages/components/upload/__tests__/upload.test.tsx @@ -165,6 +165,88 @@ describe('', () => { expect(keyList).toEqual(['test-file.txt', 'test-file2.txt']) }) + test('in beforeUpload return promise change data correctly to request', async () => { + const keyList: string[] = [] + const beforeUpload = vi.fn((file: File) => { + return new Promise((resolve) => { + data.value.key = file.name + resolve(file) + }) + }) + const httpRequest = vi.fn((val) => { + keyList.push(val?.data?.key) + return Promise.resolve() + }) + + const data = ref({ key: '' }) + + const wrapper = mount(() => ( + + )) + + const fileList = [ + new File(['content'], 'test-file.txt'), + new File(['content2'], 'test-file2.txt'), + ] + mockGetFile(wrapper.find('input').element, fileList) + + await wrapper.find('input').trigger('change') + + expect(beforeUpload).toHaveBeenCalled() + await flushPromises() + + expect(keyList).toEqual(['test-file.txt', 'test-file2.txt']) + }) + + test('upload files and save keyList', async () => { + const keyList: string[] = [] + const beforeUpload = vi.fn((file: File) => { + return new Promise((resolve) => { + data.value.key = file.name + resolve(file) + }) + }) + const httpRequest = vi.fn((val) => { + keyList.push(val?.data?.key) + return Promise.resolve() + }) + + const data = ref({ key: '' }) + + const wrapper = mount(() => ( + + )) + + // upload the first file + const firstFile = new File(['content'], 'test-file.txt') + mockGetFile(wrapper.find('input').element, [firstFile]) + await wrapper.find('input').trigger('change') + await flushPromises() + + // upload the second file + const secondFile = new File(['content2'], 'test-file2.txt') + mockGetFile(wrapper.find('input').element, [firstFile, secondFile]) + await wrapper.find('input').trigger('change') + await flushPromises() + + // check the keyList after uploading both files + expect(keyList).toEqual([ + 'test-file.txt', + 'test-file.txt', + 'test-file2.txt', + ]) + }) + test('onProgress should work', async () => { const onProgress = vi.fn() const httpRequest = vi.fn(({ onProgress }) => { diff --git a/packages/components/upload/src/upload-content.vue b/packages/components/upload/src/upload-content.vue index ff7c903cf5..eb52778155 100644 --- a/packages/components/upload/src/upload-content.vue +++ b/packages/components/upload/src/upload-content.vue @@ -29,7 +29,7 @@