diff --git a/src/upload/__test__/index.test.jsx b/src/upload/__test__/index.test.jsx index e551680b6..a5c5d73fd 100644 --- a/src/upload/__test__/index.test.jsx +++ b/src/upload/__test__/index.test.jsx @@ -300,8 +300,16 @@ describe('Upload', () => { describe('event', () => { it(':events', async () => { + const onSelectChange = vi.fn(); + const onSuccess = vi.fn(); + const onPreview = vi.fn(); + const onRemove = vi.fn(); const props = { requestMethod, + onSelectChange, + onSuccess, + onPreview, + onRemove, }; const wrapper = mount(Upload, { @@ -311,14 +319,14 @@ describe('Upload', () => { triggerUploadFile(wrapper, [mockFileFoo]); await sleep(0); - expect(wrapper.emitted()).toHaveProperty('select-change'); - expect(wrapper.emitted()).toHaveProperty('success'); + expect(onSelectChange).toHaveBeenCalledTimes(1); + expect(onSuccess).toHaveBeenCalledTimes(1); await wrapper.find('.t-upload__image').trigger('click'); - expect(wrapper.emitted()).toHaveProperty('preview'); + expect(onPreview).toHaveBeenCalledTimes(1); await wrapper.findComponent(CloseIcon).trigger('click'); - expect(wrapper.emitted()).toHaveProperty('remove'); + expect(onRemove).toHaveBeenCalledTimes(1); }); }); diff --git a/src/upload/upload.vue b/src/upload/upload.vue index 8d52803f5..e1e826cbc 100644 --- a/src/upload/upload.vue +++ b/src/upload/upload.vue @@ -141,9 +141,10 @@ export default defineComponent({ const handlePreview = (e: MouseEvent, file: UploadFile, index: number) => { initialIndex.value = index; showViewer.value = true; - emit('preview', { + props.onPreview?.({ e, file, + index, }); }; @@ -156,7 +157,7 @@ export default defineComponent({ if (disabled.value || !input || !input.files) return; const formatFiles = formatFileToUploadFile(input.files); - emit?.('select-change', [...formatFiles], { currentSelectedFiles: uploadedFiles.value }); + props.onSelectChange?.([...formatFiles], { currentSelectedFiles: uploadedFiles.value }); uploadFiles(formatFiles); input.value = ''; }; @@ -309,7 +310,7 @@ export default defineComponent({ } } images.value.splice(index, 1); - emit('remove', { e, index, file }); + props.onRemove?.({ e, index, file }); }; const upload = async (file: UploadFile): Promise => { @@ -409,7 +410,7 @@ export default defineComponent({ const newFile = { ...file, response: res }; const files = uploadedFiles.value.concat(newFile as UploadFile); setInnerFiles(files, { e: event, response: res, trigger: 'upload-success' }); - emit('success', { + props.onSuccess?.({ file, fileList: files, e: event,