In the middle of refactoring the tests

This commit is contained in:
Wolfgang Huß 2019-07-31 12:19:47 +02:00
parent 1a1ab418a3
commit 51321df931
2 changed files with 52 additions and 42 deletions

View File

@ -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))
})
})

View File

@ -46,9 +46,7 @@
:disabled="loading"
ghost
@click.prevent="$router.back()"
>
{{ $t('actions.cancel') }}
</ds-button>
>{{ $t('actions.cancel') }}</ds-button>
<ds-button
class="submit-button-for-test"
type="submit"
@ -56,9 +54,8 @@
:loading="loading"
:disabled="disabledByContent || errors"
primary
>
{{ $t('actions.save') }}
</ds-button>
@click.prevent="submit"
>{{ $t('actions.save') }}</ds-button>
</div>
<ds-space margin-bottom="large" />
</ds-card>
@ -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 => {