diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f784b6ae4..4973cc259 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -470,7 +470,7 @@ jobs: report_name: Coverage Admin Interface type: lcov result_path: ./coverage/lcov.info - min_coverage: 79 + min_coverage: 80 token: ${{ github.token }} ############################################################################## diff --git a/admin/src/components/UserTable.vue b/admin/src/components/UserTable.vue index dec6d88e4..871d5ce57 100644 --- a/admin/src/components/UserTable.vue +++ b/admin/src/components/UserTable.vue @@ -161,8 +161,6 @@ import ConfirmRegisterMailFormular from '../components/ConfirmRegisterMailFormul import CreationTransactionListFormular from '../components/CreationTransactionListFormular.vue' import RowDetails from '../components/RowDetails.vue' -import { confirmPendingCreation } from '../graphql/confirmPendingCreation' - const slotNames = ['show-creation', 'show-register-mail', 'show-transaction-list'] export default { @@ -272,7 +270,7 @@ export default { this.bookmarkRemove(item) } if (bookmarkType === 'confirm') { - this.bookmarkConfirm(item) + this.$emit('confirm-creation', item) } this.overlay = false }, @@ -288,24 +286,9 @@ export default { } if (this.type === 'PageCreationConfirm') { - this.$emit('remove-confirm-result', item, 'remove') + this.$emit('remove-creation', item) } }, - bookmarkConfirm(item) { - this.$apollo - .mutate({ - mutation: confirmPendingCreation, - variables: { - id: item.id, - }, - }) - .then(() => { - this.$emit('remove-confirm-result', item, 'confirmed') - }) - .catch((error) => { - this.$toasted.error(error.message) - }) - }, updateCreationData(data) { this.creationUserData.amount = data.amount this.creationUserData.date = data.date diff --git a/admin/src/pages/Creation.vue b/admin/src/pages/Creation.vue index db6af503d..854884053 100644 --- a/admin/src/pages/Creation.vue +++ b/admin/src/pages/Creation.vue @@ -126,8 +126,8 @@ export default { } }, removeAllBookmark() { - this.itemsMassCreation.forEach((item) => this.itemsList.push(item)) this.itemsMassCreation = [] + this.getUsers() }, }, computed: { diff --git a/admin/src/pages/CreationConfirm.spec.js b/admin/src/pages/CreationConfirm.spec.js index bf28ef687..5768e1078 100644 --- a/admin/src/pages/CreationConfirm.spec.js +++ b/admin/src/pages/CreationConfirm.spec.js @@ -1,6 +1,7 @@ import { mount } from '@vue/test-utils' import CreationConfirm from './CreationConfirm.vue' import { deletePendingCreation } from '../graphql/deletePendingCreation' +import { confirmPendingCreation } from '../graphql/confirmPendingCreation' const localVue = global.localVue @@ -26,7 +27,7 @@ const apolloQueryMock = jest.fn().mockResolvedValue({ lastName: 'Hotzenplotz', email: 'raeuber@hotzenplotz.de', amount: 1000000, - memo: 'Gut Ergatert', + memo: 'Gut Ergattert', date: new Date(), moderator: 0, }, @@ -69,6 +70,10 @@ describe('CreationConfirm', () => { expect(wrapper.find('div.creation-confirm').exists()).toBeTruthy() }) + it('has two pending creations', () => { + expect(wrapper.vm.pendingCreations).toHaveLength(2) + }) + describe('store', () => { it('commits resetOpenCreations to store', () => { expect(storeCommitMock).toBeCalledWith('resetOpenCreations') @@ -78,37 +83,9 @@ describe('CreationConfirm', () => { }) }) - describe('delete creation delete with success', () => { + describe('remove creation with success', () => { beforeEach(async () => { - apolloQueryMock.mockResolvedValue({ - data: { - getPendingCreations: [ - { - id: 1, - firstName: 'Bibi', - lastName: 'Bloxberg', - email: 'bibi@bloxberg.de', - amount: 500, - memo: 'Danke für alles', - date: new Date(), - moderator: 0, - }, - { - id: 2, - firstName: 'Räuber', - lastName: 'Hotzenplotz', - email: 'raeuber@hotzenplotz.de', - amount: 1000000, - memo: 'Gut Ergatert', - date: new Date(), - moderator: 0, - }, - ], - }, - }) - await wrapper - .findComponent({ name: 'UserTable' }) - .vm.$emit('remove-confirm-result', { id: 1 }, 'remove') + await wrapper.findComponent({ name: 'UserTable' }).vm.$emit('remove-creation', { id: 1 }) }) it('calls the deletePendingCreation mutation', () => { @@ -127,12 +104,10 @@ describe('CreationConfirm', () => { }) }) - describe('delete creation delete with error', () => { + describe('remove creation with error', () => { beforeEach(async () => { apolloMutateMock.mockRejectedValue({ message: 'Ouchhh!' }) - await wrapper - .findComponent({ name: 'UserTable' }) - .vm.$emit('remove-confirm-result', { id: 1 }, 'remove') + await wrapper.findComponent({ name: 'UserTable' }).vm.$emit('remove-creation', { id: 1 }) }) it('toasts an error message', () => { @@ -140,43 +115,16 @@ describe('CreationConfirm', () => { }) }) - describe('confirm creation delete with success', () => { + describe('confirm creation with success', () => { beforeEach(async () => { - apolloQueryMock.mockResolvedValue({ - data: { - getPendingCreations: [ - { - id: 1, - firstName: 'Bibi', - lastName: 'Bloxberg', - email: 'bibi@bloxberg.de', - amount: 500, - memo: 'Danke für alles', - date: new Date(), - moderator: 0, - }, - { - id: 2, - firstName: 'Räuber', - lastName: 'Hotzenplotz', - email: 'raeuber@hotzenplotz.de', - amount: 1000000, - memo: 'Gut Ergatert', - date: new Date(), - moderator: 0, - }, - ], - }, - }) - await wrapper - .findComponent({ name: 'UserTable' }) - .vm.$emit('remove-confirm-result', { id: 1 }, 'confirmed') + apolloMutateMock.mockResolvedValue({}) + await wrapper.findComponent({ name: 'UserTable' }).vm.$emit('confirm-creation', { id: 2 }) }) - it('calls the deletePendingCreation mutation', () => { - expect(apolloMutateMock).not.toBeCalledWith({ - mutation: deletePendingCreation, - variables: { id: 1 }, + it('calls the confirmPendingCreation mutation', () => { + expect(apolloMutateMock).toBeCalledWith({ + mutation: confirmPendingCreation, + variables: { id: 2 }, }) }) @@ -189,19 +137,18 @@ describe('CreationConfirm', () => { }) }) - describe('delete creation delete with error', () => { + describe('confirm creation with error', () => { beforeEach(async () => { - await wrapper - .findComponent({ name: 'UserTable' }) - .vm.$emit('remove-confirm-result', { id: 1 }, 'confirm') + apolloMutateMock.mockRejectedValue({ message: 'Ouchhh!' }) + await wrapper.findComponent({ name: 'UserTable' }).vm.$emit('confirm-creation', { id: 2 }) }) it('toasts an error message', () => { - expect(toastedErrorMock).toBeCalledWith('creation_form.toasted_default') + expect(toastedErrorMock).toBeCalledWith('Ouchhh!') }) }) - describe('server response is error', () => { + describe('server response for get pending creations is error', () => { beforeEach(() => { jest.clearAllMocks() apolloQueryMock.mockRejectedValue({ diff --git a/admin/src/pages/CreationConfirm.vue b/admin/src/pages/CreationConfirm.vue index ecf6d9281..ac1a1594c 100644 --- a/admin/src/pages/CreationConfirm.vue +++ b/admin/src/pages/CreationConfirm.vue @@ -3,9 +3,10 @@ @@ -13,6 +14,7 @@ import UserTable from '../components/UserTable.vue' import { getPendingCreations } from '../graphql/getPendingCreations' import { deletePendingCreation } from '../graphql/deletePendingCreation' +import { confirmPendingCreation } from '../graphql/confirmPendingCreation' export default { name: 'CreationConfirm', @@ -21,8 +23,65 @@ export default { }, data() { return { - showArrays: false, - fields: [ + pendingCreations: [], + } + }, + methods: { + removeCreation(item) { + this.$apollo + .mutate({ + mutation: deletePendingCreation, + variables: { + id: item.id, + }, + }) + .then((result) => { + this.updatePendingCreations(item.id) + this.$toasted.success(this.$t('creation_form.toasted_delete')) + }) + .catch((error) => { + this.$toasted.error(error.message) + }) + }, + confirmCreation(item) { + this.$apollo + .mutate({ + mutation: confirmPendingCreation, + variables: { + id: item.id, + }, + }) + .then((result) => { + this.updatePendingCreations(item.id) + this.$toasted.success(this.$t('creation_form.toasted_created')) + }) + .catch((error) => { + this.$toasted.error(error.message) + }) + }, + getPendingCreations() { + this.$apollo + .query({ + query: getPendingCreations, + fetchPolicy: 'network-only', + }) + .then((result) => { + this.$store.commit('resetOpenCreations') + this.pendingCreations = result.data.getPendingCreations + this.$store.commit('setOpenCreations', result.data.getPendingCreations.length) + }) + .catch((error) => { + this.$toasted.error(error.message) + }) + }, + updatePendingCreations(id) { + this.pendingCreations = this.pendingCreations.filter((obj) => obj.id !== id) + this.$store.commit('openCreationsMinus', 1) + }, + }, + computed: { + fields() { + return [ { key: 'bookmark', label: 'löschen' }, { key: 'email', label: 'Email' }, { key: 'firstName', label: 'Vorname' }, @@ -45,56 +104,7 @@ export default { { key: 'moderator', label: 'Moderator' }, { key: 'edit_creation', label: 'ändern' }, { key: 'confirm', label: 'speichern' }, - ], - confirmResult: [], - } - }, - methods: { - removeConfirmResult(e, event) { - let index = 0 - const findArr = this.confirmResult.find((arr) => arr.id === e.id) - switch (event) { - case 'remove': - this.$apollo - .mutate({ - mutation: deletePendingCreation, - variables: { - id: findArr.id, - }, - }) - .then((result) => { - index = this.confirmResult.indexOf(findArr) - this.confirmResult.splice(index, 1) - this.$store.commit('openCreationsMinus', 1) - this.$toasted.success(this.$t('creation_form.toasted_delete')) - }) - .catch((error) => { - this.$toasted.error(error.message) - }) - break - case 'confirmed': - this.confirmResult.splice(index, 1) - this.$store.commit('openCreationsMinus', 1) - this.$toasted.success(this.$t('creation_form.toasted_created')) - break - default: - this.$toasted.error(this.$t('creation_form.toasted_default', { event })) - } - }, - getPendingCreations() { - this.$apollo - .query({ - query: getPendingCreations, - fetchPolicy: 'network-only', - }) - .then((result) => { - this.$store.commit('resetOpenCreations') - this.confirmResult = result.data.getPendingCreations - this.$store.commit('setOpenCreations', result.data.getPendingCreations.length) - }) - .catch((error) => { - this.$toasted.error(error.message) - }) + ] }, }, async created() {