From 154b6a6f788541fd7de0d3622b1cced1a173a3b4 Mon Sep 17 00:00:00 2001 From: aonomike Date: Tue, 28 May 2019 23:31:57 +0300 Subject: [PATCH 1/3] Fix large file sizes bug --- webapp/components/Upload/index.vue | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/webapp/components/Upload/index.vue b/webapp/components/Upload/index.vue index 831edd2f8..df9d35d22 100644 --- a/webapp/components/Upload/index.vue +++ b/webapp/components/Upload/index.vue @@ -9,6 +9,7 @@ :style="backgroundImage" @vdropzone-thumbnail="thumbnail" @vdropzone-drop="vddrop" + @vdropzone-error="verror" /> @@ -27,10 +28,11 @@ export default { return { dropzoneOptions: { url: this.vddrop, - maxFilesize: 0.5, + maxFilesize: 3.0, previewTemplate: this.template(), dictDefaultMessage: '', }, + error: false, } }, computed: { @@ -42,19 +44,20 @@ export default { } }, }, + watch: { + error() { + let that = this + setTimeout(function() { + that.error = false + }, 2000) + }, + }, methods: { template() { return `
-
-
-
-
-
-
-
` }, @@ -94,6 +97,12 @@ export default { }) .catch(error => this.$toast.error(error.message)) }, + verror(file, message) { + this.error = true + if (file.status === 'error') { + this.$toast.error(file.status, message) + } + }, }, } From 0111e60f1d07075c31769091423b7d796423ab86 Mon Sep 17 00:00:00 2001 From: aonomike Date: Wed, 29 May 2019 16:09:34 +0300 Subject: [PATCH 2/3] Resolve Upload image rerender and double submit - Make Upload component re-render on failed upload - Resolve double submit of uploaded to the backend when uploading with drag and drop Co-authored-by: @mattWr18 Co-authored-by: @tirrok --- webapp/components/Upload/index.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/webapp/components/Upload/index.vue b/webapp/components/Upload/index.vue index 5fbcff524..e5f91347d 100644 --- a/webapp/components/Upload/index.vue +++ b/webapp/components/Upload/index.vue @@ -8,7 +8,6 @@ :include-styling="false" :style="backgroundImage" @vdropzone-thumbnail="thumbnail" - @vdropzone-drop="vddrop" @vdropzone-error="verror" /> @@ -28,7 +27,7 @@ export default { return { dropzoneOptions: { url: this.vddrop, - maxFilesize: 3.0, + maxFilesize: 5.0, previewTemplate: this.template(), dictDefaultMessage: '', }, @@ -98,8 +97,8 @@ export default { .catch(error => this.$toast.error(error.message)) }, verror(file, message) { - this.error = true if (file.status === 'error') { + this.error = true this.$toast.error(file.status, message) } }, From 78100bec3734cd583b2fc60a6afb1c2abf104b1e Mon Sep 17 00:00:00 2001 From: aonomike Date: Sat, 1 Jun 2019 20:23:04 +0300 Subject: [PATCH 3/3] Add tests to upload error bug fix Co-authored-by: mattwr18 --- webapp/components/Upload/spec.js | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/webapp/components/Upload/spec.js b/webapp/components/Upload/spec.js index 85215ea59..b81babb6e 100644 --- a/webapp/components/Upload/spec.js +++ b/webapp/components/Upload/spec.js @@ -26,6 +26,7 @@ describe('Upload', () => { success: jest.fn(), error: jest.fn(), }, + $t: jest.fn(), } const propsData = { @@ -34,7 +35,7 @@ describe('Upload', () => { }, } - const file = { + const fileSuccess = { filename: 'avatar.jpg', previewElement: { classList: { @@ -59,13 +60,38 @@ describe('Upload', () => { wrapper = shallowMount(Upload, { localVue, propsData, mocks }) }) + afterEach(() => { + jest.clearAllMocks() + }) + it('sends a the UpdateUser mutation when vddrop is called', () => { wrapper.vm.vddrop([{ filename: 'avatar.jpg' }]) expect(mocks.$apollo.mutate).toHaveBeenCalledTimes(1) }) it('thumbnail', () => { - wrapper.vm.thumbnail(file, dataUrl) - expect(file.previewElement.classList.add).toHaveBeenCalledTimes(1) + wrapper.vm.thumbnail(fileSuccess, dataUrl) + expect(fileSuccess.previewElement.classList.add).toHaveBeenCalledTimes(1) + }) + + describe('error handling', () => { + const message = 'File upload failed' + const fileError = { status: 'error' } + + it('defaults to error false', () => { + expect(wrapper.vm.error).toEqual(false) + }) + + it('shows an error toaster when verror is called', () => { + wrapper.vm.verror(fileError, message) + expect(mocks.$toast.error).toHaveBeenCalledWith(fileError.status, message) + }) + + it('changes error status from false to true to false', () => { + wrapper.vm.verror(fileError, message) + expect(wrapper.vm.error).toEqual(true) + jest.runAllTimers() + expect(wrapper.vm.error).toEqual(false) + }) }) })