diff --git a/webapp/components/ContributionForm/ContributionForm.spec.js b/webapp/components/ContributionForm/ContributionForm.spec.js index 3946f2508..742807225 100644 --- a/webapp/components/ContributionForm/ContributionForm.spec.js +++ b/webapp/components/ContributionForm/ContributionForm.spec.js @@ -30,9 +30,9 @@ describe('ContributionForm.vue', () => { postTitleTooLong += 'x' } const postContent = 'this is a post' - const postContentTooShort = 'xxx' + const postContentTooShort = 'xx' let postContentTooLong = '' - for (let i = 0; i < 2000; i++) { + for (let i = 0; i < 2001; i++) { postContentTooLong += 'x' } const imageUpload = { @@ -120,58 +120,65 @@ describe('ContributionForm.vue', () => { describe('invalid form submission', () => { it('title and content should not be empty ', async () => { - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).not.toHaveBeenCalled() }) it('title should not be empty', async () => { - wrapper.vm.updateEditorContent(postContent) - await wrapper.find('form').trigger('submit') + await wrapper.vm.updateEditorContent(postContent) + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') + // submitButton.trigger('click') expect(mocks.$apollo.mutate).not.toHaveBeenCalled() }) it('title should not be too long', async () => { postTitleInput = wrapper.find('.ds-input') postTitleInput.setValue(postTitleTooLong) - wrapper.vm.updateEditorContent(postContent) - await wrapper.find('form').trigger('submit') + await wrapper.vm.updateEditorContent(postContent) + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).not.toHaveBeenCalled() }) it('title should not be too short', async () => { postTitleInput = wrapper.find('.ds-input') postTitleInput.setValue(postTitleTooShort) - wrapper.vm.updateEditorContent(postContent) - await wrapper.find('form').trigger('submit') + await wrapper.vm.updateEditorContent(postContent) + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).not.toHaveBeenCalled() }) it('content should not be empty', async () => { postTitleInput = wrapper.find('.ds-input') postTitleInput.setValue(postTitle) - await wrapper.find('form').trigger('submit') - expect(mocks.$apollo.mutate).not.toHaveBeenCalled() - }) - - it('content should not be too long', async () => { - postTitleInput = wrapper.find('.ds-input') - postTitleInput.setValue(postTitle) - wrapper.vm.updateEditorContent(postContentTooLong) - // console.log('this.form.content: ', wrapper.vm.form.content) - console.log('wrapper.vm.contentMin: ', wrapper.vm.contentMin) - console.log('wrapper.vm.contentMax: ', wrapper.vm.contentMax) - await wrapper.find('form').trigger('submit') - // await wrapper.find('.submit-button-for-test').trigger('click') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).not.toHaveBeenCalled() }) it('content should not be too short', async () => { postTitleInput = wrapper.find('.ds-input') postTitleInput.setValue(postTitle) - wrapper.vm.updateEditorContent(postContentTooShort) + await wrapper.vm.updateEditorContent(postContentTooShort) // console.log('this.form.content: ', wrapper.vm.form.content) - await wrapper.find('form').trigger('submit') - // await wrapper.find('.submit-button-for-test').trigger('click') + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') + expect(mocks.$apollo.mutate).not.toHaveBeenCalled() + }) + + it('content should not be too long', async () => { + postTitleInput = wrapper.find('.ds-input') + postTitleInput.setValue(postTitle) + await wrapper.vm.updateEditorContent(postContentTooLong) + // console.log('this.form.content: ', wrapper.vm.form.content) + // console.log('wrapper.vm.contentMin: ', wrapper.vm.contentMin) + // console.log('wrapper.vm.contentMax: ', wrapper.vm.contentMax) + // console.log('wrapper.vm.disabledByContent: ', wrapper.vm.disabledByContent) + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).not.toHaveBeenCalled() }) }) @@ -192,15 +199,16 @@ describe('ContributionForm.vue', () => { } postTitleInput = wrapper.find('.ds-input') postTitleInput.setValue(postTitle) - wrapper.vm.updateEditorContent(postContent) - await wrapper.find('form').trigger('submit') + await wrapper.vm.updateEditorContent(postContent) }) it('with title and content', () => { + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledTimes(1) }) it("sends a fallback language based on a user's locale", () => { + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams)) }) @@ -208,7 +216,8 @@ describe('ContributionForm.vue', () => { expectedParams.variables.language = 'de' deutschOption = wrapper.findAll('li').at(0) deutschOption.trigger('click') - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams)) }) @@ -216,14 +225,16 @@ describe('ContributionForm.vue', () => { const categoryIds = ['cat12', 'cat15', 'cat37'] expectedParams.variables.categoryIds = categoryIds wrapper.find(CategoriesSelect).vm.$emit('updateCategories', categoryIds) - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams)) }) it('supports adding a teaser image', async () => { expectedParams.variables.imageUpload = imageUpload wrapper.find(TeaserImage).vm.$emit('addTeaserImage', imageUpload) - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams)) }) @@ -252,11 +263,13 @@ describe('ContributionForm.vue', () => { postTitleInput.setValue(postTitle) wrapper.vm.updateEditorContent(postContent) // second submission causes mutation to reject - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') }) it('shows an error toaster when apollo mutation rejects', async () => { - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') await mocks.$apollo.mutate expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorised!') }) @@ -316,7 +329,8 @@ describe('ContributionForm.vue', () => { postTitleInput = wrapper.find('.ds-input') postTitleInput.setValue(postTitle) wrapper.vm.updateEditorContent(postContent) - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams)) }) @@ -327,7 +341,8 @@ describe('ContributionForm.vue', () => { wrapper.vm.updateEditorContent(postContent) expectedParams.variables.categoryIds = categoryIds wrapper.find(CategoriesSelect).vm.$emit('updateCategories', categoryIds) - await wrapper.find('form').trigger('submit') + // await wrapper.find('form').trigger('submit') + await wrapper.find('.submit-button-for-test').trigger('click') expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams)) }) }) diff --git a/webapp/components/ContributionForm/ContributionForm.vue b/webapp/components/ContributionForm/ContributionForm.vue index 485af2545..8db0a28bb 100644 --- a/webapp/components/ContributionForm/ContributionForm.vue +++ b/webapp/components/ContributionForm/ContributionForm.vue @@ -46,9 +46,7 @@ :disabled="loading" ghost @click.prevent="$router.back()" - > - {{ $t('actions.cancel') }} - + >{{ $t('actions.cancel') }} - {{ $t('actions.save') }} - + @click.prevent="submit" + >{{ $t('actions.save') }} @@ -203,10 +200,8 @@ export default { const str = content.replace(/<\/?[^>]+(>|$)/gm, '') // Set counter length of text this.form.contentLength = str.length - console.log('this.disabledByContent: ', this.disabledByContent) // Enable save button if requirements are met this.disabledByContent = !(this.contentMin <= str.length && str.length <= this.contentMax) - console.log('this.disabledByContent: ', this.disabledByContent) }, availableLocales() { orderBy(locales, 'name').map(locale => {