From 9ff1fc5b624aaf41f6161567e0b285f5dab7a7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 4 Aug 2020 14:21:35 +0200 Subject: [PATCH] Fix linting --- .../components/DeleteData/DeleteData.spec.js | 330 +++++++++--------- webapp/components/DeleteData/DeleteData.vue | 6 +- 2 files changed, 171 insertions(+), 165 deletions(-) diff --git a/webapp/components/DeleteData/DeleteData.spec.js b/webapp/components/DeleteData/DeleteData.spec.js index 34e03040a..81a6c10c7 100644 --- a/webapp/components/DeleteData/DeleteData.spec.js +++ b/webapp/components/DeleteData/DeleteData.spec.js @@ -6,172 +6,174 @@ import Vuex from 'vuex' const localVue = global.localVue describe('DeleteData.vue', () => { - let mocks - let wrapper - let getters - let actions - let deleteAccountBtn - let enableDeletionInput - let enableContributionDeletionCheckbox - let enableCommentDeletionCheckbox - const deleteAccountName = 'Delete MyAccount' - const deleteContributionsMessage = 'Delete my 2 posts' - const deleteCommentsMessage = 'Delete my 3 comments' + let mocks + let wrapper + let getters + let actions + let deleteAccountBtn + let enableDeletionInput + let enableContributionDeletionCheckbox + let enableCommentDeletionCheckbox + const deleteAccountName = 'Delete MyAccount' + + beforeEach(() => { + mocks = { + $t: jest.fn((a) => a), + $apollo: { + mutate: jest + .fn() + .mockResolvedValueOnce({ + data: { + DeleteData: { + id: 'u343', + }, + }, + }) + .mockRejectedValue({ message: 'Not authorised!' }), + }, + $toast: { + error: jest.fn(), + success: jest.fn(), + }, + $router: { + history: { + push: jest.fn(), + }, + }, + } + getters = { + 'auth/user': () => { + return { id: 'u343', name: deleteAccountName } + }, + } + actions = { 'auth/logout': jest.fn() } + }) + + describe('mount', () => { + const Wrapper = () => { + const store = new Vuex.Store({ + getters, + actions, + }) + return mount(DeleteData, { mocks, localVue, store }) + } beforeEach(() => { - mocks = { - $t: jest.fn((a) => a), - $apollo: { - mutate: jest - .fn() - .mockResolvedValueOnce({ - data: { - DeleteData: { - id: 'u343', - }, - }, - }) - .mockRejectedValue({ message: 'Not authorised!' }), - }, - $toast: { - error: jest.fn(), - success: jest.fn(), - }, - $router: { - history: { - push: jest.fn(), - }, - }, - } - getters = { - 'auth/user': () => { - return { id: 'u343', name: deleteAccountName } - }, - } - actions = { 'auth/logout': jest.fn() } + wrapper = Wrapper() }) - describe('mount', () => { - const Wrapper = () => { - const store = new Vuex.Store({ - getters, - actions, - }) - return mount(DeleteData, { mocks, localVue, store }) - } - - beforeEach(() => { - wrapper = Wrapper() - }) - - afterEach(() => { - jest.clearAllMocks() - }) - - it('checkbox deleteContributions defaults be false', () => { - expect(wrapper.vm.deleteContributions).toEqual(false) - }) - - it('checkbox deleteComments defaults be false', () => { - expect(wrapper.vm.deleteComments).toEqual(false) - }) - - it('deleteButton defaults be false', () => { - expect(wrapper.vm.deleteEnabled).toEqual(false) - }) - - it('does not call the delete user mutation if deleteEnabled is false', () => { - deleteAccountBtn = wrapper.find('[data-test="delete-button"]') - deleteAccountBtn.trigger('click') - expect(mocks.$apollo.mutate).not.toHaveBeenCalled() - }) - - describe('calls the delete user mutation', () => { - beforeEach(() => { - enableDeletionInput = wrapper.find('.ds-input') - enableDeletionInput.setValue(deleteAccountName) - deleteAccountBtn = wrapper.find('[data-test="delete-button"]') - }) - - it('if deleteEnabled is true and only deletes user ', () => { - deleteAccountBtn.trigger('click') - expect(mocks.$apollo.mutate).toHaveBeenCalledWith( - expect.objectContaining({ - variables: { - id: 'u343', - resource: [], - }, - }), - ) - }) - - it("deletes user's posts and comments if requested by default ", () => { - enableContributionDeletionCheckbox = wrapper.find('[data-test="contributions-deletion-checkbox"]') - enableContributionDeletionCheckbox.trigger('click') - enableCommentDeletionCheckbox = wrapper.find('[data-test="comments-deletion-checkbox"]') - enableCommentDeletionCheckbox.trigger('click') - deleteAccountBtn.trigger('click') - expect(mocks.$apollo.mutate).toHaveBeenCalledWith( - expect.objectContaining({ - variables: { - id: 'u343', - resource: ['Post', 'Comment'], - }, - }), - ) - }) - - it("deletes a user's posts if requested", () => { - enableContributionDeletionCheckbox = wrapper.find('[data-test="contributions-deletion-checkbox"]') - enableContributionDeletionCheckbox.trigger('click') - deleteAccountBtn.trigger('click') - expect(mocks.$apollo.mutate).toHaveBeenCalledWith( - expect.objectContaining({ - variables: { - id: 'u343', - resource: ['Post'], - }, - }), - ) - }) - - it("deletes a user's comments if requested", () => { - enableCommentDeletionCheckbox = wrapper.find('[data-test="comments-deletion-checkbox"]') - enableCommentDeletionCheckbox.trigger('click') - deleteAccountBtn.trigger('click') - expect(mocks.$apollo.mutate).toHaveBeenCalledWith( - expect.objectContaining({ - variables: { - id: 'u343', - resource: ['Comment'], - }, - }), - ) - }) - - it('shows a success toaster after successful mutation', async() => { - await deleteAccountBtn.trigger('click') - expect(mocks.$toast.success).toHaveBeenCalledTimes(1) - }) - - it('redirect the user to the homepage', async() => { - await deleteAccountBtn.trigger('click') - expect(mocks.$router.history.push).toHaveBeenCalledWith('/') - }) - }) - - describe('error handling', () => { - it('shows an error toaster when the mutation rejects', async() => { - enableDeletionInput = wrapper.find('.ds-input') - enableDeletionInput.setValue(deleteAccountName) - await Vue.nextTick() - deleteAccountBtn = wrapper.find('[data-test="delete-button"]') - await deleteAccountBtn.trigger('click') - // second submission causes mutation to reject - await deleteAccountBtn.trigger('click') - await mocks.$apollo.mutate - expect(mocks.$toast.error).toHaveBeenCalledWith('Not authorised!') - }) - }) + afterEach(() => { + jest.clearAllMocks() }) -}) \ No newline at end of file + + it('checkbox deleteContributions defaults be false', () => { + expect(wrapper.vm.deleteContributions).toEqual(false) + }) + + it('checkbox deleteComments defaults be false', () => { + expect(wrapper.vm.deleteComments).toEqual(false) + }) + + it('deleteButton defaults be false', () => { + expect(wrapper.vm.deleteEnabled).toEqual(false) + }) + + it('does not call the delete user mutation if deleteEnabled is false', () => { + deleteAccountBtn = wrapper.find('[data-test="delete-button"]') + deleteAccountBtn.trigger('click') + expect(mocks.$apollo.mutate).not.toHaveBeenCalled() + }) + + describe('calls the delete user mutation', () => { + beforeEach(() => { + enableDeletionInput = wrapper.find('.ds-input') + enableDeletionInput.setValue(deleteAccountName) + deleteAccountBtn = wrapper.find('[data-test="delete-button"]') + }) + + it('if deleteEnabled is true and only deletes user ', () => { + deleteAccountBtn.trigger('click') + expect(mocks.$apollo.mutate).toHaveBeenCalledWith( + expect.objectContaining({ + variables: { + id: 'u343', + resource: [], + }, + }), + ) + }) + + it("deletes user's posts and comments if requested by default ", () => { + enableContributionDeletionCheckbox = wrapper.find( + '[data-test="contributions-deletion-checkbox"]', + ) + enableContributionDeletionCheckbox.trigger('click') + enableCommentDeletionCheckbox = wrapper.find('[data-test="comments-deletion-checkbox"]') + enableCommentDeletionCheckbox.trigger('click') + deleteAccountBtn.trigger('click') + expect(mocks.$apollo.mutate).toHaveBeenCalledWith( + expect.objectContaining({ + variables: { + id: 'u343', + resource: ['Post', 'Comment'], + }, + }), + ) + }) + + it("deletes a user's posts if requested", () => { + enableContributionDeletionCheckbox = wrapper.find( + '[data-test="contributions-deletion-checkbox"]', + ) + enableContributionDeletionCheckbox.trigger('click') + deleteAccountBtn.trigger('click') + expect(mocks.$apollo.mutate).toHaveBeenCalledWith( + expect.objectContaining({ + variables: { + id: 'u343', + resource: ['Post'], + }, + }), + ) + }) + + it("deletes a user's comments if requested", () => { + enableCommentDeletionCheckbox = wrapper.find('[data-test="comments-deletion-checkbox"]') + enableCommentDeletionCheckbox.trigger('click') + deleteAccountBtn.trigger('click') + expect(mocks.$apollo.mutate).toHaveBeenCalledWith( + expect.objectContaining({ + variables: { + id: 'u343', + resource: ['Comment'], + }, + }), + ) + }) + + it('shows a success toaster after successful mutation', async () => { + await deleteAccountBtn.trigger('click') + expect(mocks.$toast.success).toHaveBeenCalledTimes(1) + }) + + it('redirect the user to the homepage', async () => { + await deleteAccountBtn.trigger('click') + expect(mocks.$router.history.push).toHaveBeenCalledWith('/') + }) + }) + + describe('error handling', () => { + it('shows an error toaster when the mutation rejects', async () => { + enableDeletionInput = wrapper.find('.ds-input') + enableDeletionInput.setValue(deleteAccountName) + await Vue.nextTick() + deleteAccountBtn = wrapper.find('[data-test="delete-button"]') + await deleteAccountBtn.trigger('click') + // second submission causes mutation to reject + await deleteAccountBtn.trigger('click') + await mocks.$apollo.mutate + expect(mocks.$toast.error).toHaveBeenCalledWith('Not authorised!') + }) + }) + }) +}) diff --git a/webapp/components/DeleteData/DeleteData.vue b/webapp/components/DeleteData/DeleteData.vue index 51edfbc5e..36d166207 100644 --- a/webapp/components/DeleteData/DeleteData.vue +++ b/webapp/components/DeleteData/DeleteData.vue @@ -10,7 +10,11 @@

{{ $t('settings.deleteUserAccount.accountDescription') }}