From ae2d5355d62f525187dd1cdb1448aec63fb05d3f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 9 Feb 2022 08:21:07 +0100 Subject: [PATCH 01/11] User Search Table --- .../src/components/Tables/SearchUserTable.vue | 142 ++++++++++++++++++ admin/src/pages/UserSearch.vue | 6 +- 2 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 admin/src/components/Tables/SearchUserTable.vue diff --git a/admin/src/components/Tables/SearchUserTable.vue b/admin/src/components/Tables/SearchUserTable.vue new file mode 100644 index 000000000..4c4ead979 --- /dev/null +++ b/admin/src/components/Tables/SearchUserTable.vue @@ -0,0 +1,142 @@ + + diff --git a/admin/src/pages/UserSearch.vue b/admin/src/pages/UserSearch.vue index 2efe9f8e8..de041282a 100644 --- a/admin/src/pages/UserSearch.vue +++ b/admin/src/pages/UserSearch.vue @@ -22,7 +22,7 @@ - + + diff --git a/admin/src/mixins/toggleRowDetails.js b/admin/src/mixins/toggleRowDetails.js index 43a7eceac..d73810ae7 100644 --- a/admin/src/mixins/toggleRowDetails.js +++ b/admin/src/mixins/toggleRowDetails.js @@ -3,6 +3,7 @@ export const toggleRowDetails = { return { slotIndex: 0, openRow: null, + creationUserData: {}, } }, methods: { @@ -20,11 +21,13 @@ export const toggleRowDetails = { row.toggleDetails() this.slotIndex = index this.openRow = row + this.creationUserData = row.item } } else { row.toggleDetails() this.slotIndex = index this.openRow = row + this.creationUserData = row.item } }, }, diff --git a/admin/src/pages/CreationConfirm.vue b/admin/src/pages/CreationConfirm.vue index ac1a1594c..fe352373e 100644 --- a/admin/src/pages/CreationConfirm.vue +++ b/admin/src/pages/CreationConfirm.vue @@ -1,17 +1,30 @@ - diff --git a/admin/src/pages/CreationConfirm.vue b/admin/src/pages/CreationConfirm.vue index fe352373e..d0b1e489b 100644 --- a/admin/src/pages/CreationConfirm.vue +++ b/admin/src/pages/CreationConfirm.vue @@ -133,3 +133,20 @@ export default { }, } + From 1100e942e4d314569bf8aaa69bb5d4e7f5690549 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 9 Feb 2022 10:10:09 +0100 Subject: [PATCH 07/11] select users table --- .../components/Tables/SelectUsersTable.vue | 35 +++++++++++++++++++ admin/src/pages/Creation.vue | 9 ++--- 2 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 admin/src/components/Tables/SelectUsersTable.vue diff --git a/admin/src/components/Tables/SelectUsersTable.vue b/admin/src/components/Tables/SelectUsersTable.vue new file mode 100644 index 000000000..5bc49823a --- /dev/null +++ b/admin/src/components/Tables/SelectUsersTable.vue @@ -0,0 +1,35 @@ + + diff --git a/admin/src/pages/Creation.vue b/admin/src/pages/Creation.vue index 64efab997..59c21d385 100644 --- a/admin/src/pages/Creation.vue +++ b/admin/src/pages/Creation.vue @@ -17,11 +17,10 @@ - import CreationFormular from '../components/CreationFormular.vue' import UserTable from '../components/UserTable.vue' +import SelectUsersTable from '../components/Tables/SelectUsersTable.vue' import { searchUsers } from '../graphql/searchUsers' import { creationMonths } from '../mixins/creationMonths' @@ -75,6 +75,7 @@ export default { components: { CreationFormular, UserTable, + SelectUsersTable, }, data() { return { From ea6bab08234701ef01cbbc91d125c821be4c5a46 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 9 Feb 2022 10:17:36 +0100 Subject: [PATCH 08/11] selected users table --- .../components/Tables/SelectedUsersTable.vue | 26 +++++++++++++++++++ admin/src/pages/Creation.vue | 11 ++++---- 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 admin/src/components/Tables/SelectedUsersTable.vue diff --git a/admin/src/components/Tables/SelectedUsersTable.vue b/admin/src/components/Tables/SelectedUsersTable.vue new file mode 100644 index 000000000..810f8dac8 --- /dev/null +++ b/admin/src/components/Tables/SelectedUsersTable.vue @@ -0,0 +1,26 @@ + + diff --git a/admin/src/pages/Creation.vue b/admin/src/pages/Creation.vue index 59c21d385..16678cad8 100644 --- a/admin/src/pages/Creation.vue +++ b/admin/src/pages/Creation.vue @@ -40,11 +40,10 @@ {{ $t('remove_all') }} - @@ -64,8 +63,8 @@ - From e3cff7fe7b5ea4b21a6669de009d621c59349a0f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 9 Feb 2022 11:06:33 +0100 Subject: [PATCH 10/11] test toggle table row mixin --- admin/src/mixins/toggleRowDetails.test.js | 141 ++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 admin/src/mixins/toggleRowDetails.test.js diff --git a/admin/src/mixins/toggleRowDetails.test.js b/admin/src/mixins/toggleRowDetails.test.js new file mode 100644 index 000000000..b365bf613 --- /dev/null +++ b/admin/src/mixins/toggleRowDetails.test.js @@ -0,0 +1,141 @@ +import { toggleRowDetails } from './toggleRowDetails' +import { mount } from '@vue/test-utils' + +const localVue = global.localVue + +const Component = { + render() {}, + mixins: [toggleRowDetails], +} + +const toggleDetailsMock = jest.fn() +const secondToggleDetailsMock = jest.fn() + +const row = { + toggleDetails: toggleDetailsMock, + index: 0, + item: { + data: 'item-data', + }, +} + +let wrapper + +describe('toggleRowDetails', () => { + beforeEach(() => { + jest.clearAllMocks() + wrapper = mount(Component, { localVue }) + }) + + it('sets default data', () => { + expect(wrapper.vm.slotIndex).toBe(0) + expect(wrapper.vm.openRow).toBe(null) + expect(wrapper.vm.creationUserData).toEqual({}) + }) + + describe('no open row', () => { + beforeEach(() => { + wrapper.vm.rowToogleDetails(row, 2) + }) + + it('calls toggleDetails', () => { + expect(toggleDetailsMock).toBeCalled() + }) + + it('updates slot index', () => { + expect(wrapper.vm.slotIndex).toBe(2) + }) + + it('updates open row', () => { + expect(wrapper.vm.openRow).toEqual( + expect.objectContaining({ + index: 0, + item: { + data: 'item-data', + }, + }), + ) + }) + + it('updates creation user data', () => { + expect(wrapper.vm.creationUserData).toEqual({ data: 'item-data' }) + }) + }) + + describe('with open row', () => { + beforeEach(() => { + wrapper.setData({ openRow: row }) + }) + + describe('row index is open row index', () => { + describe('index is slot index', () => { + beforeEach(() => { + wrapper.vm.rowToogleDetails(row, 0) + }) + + it('calls toggleDetails', () => { + expect(toggleDetailsMock).toBeCalled() + }) + + it('sets open row to null', () => { + expect(wrapper.vm.openRow).toBe(null) + }) + }) + + describe('index is not slot index', () => { + beforeEach(() => { + wrapper.vm.rowToogleDetails(row, 2) + }) + + it('does not call toggleDetails', () => { + expect(toggleDetailsMock).not.toBeCalled() + }) + + it('updates slot index', () => { + expect(wrapper.vm.slotIndex).toBe(2) + }) + }) + }) + + describe('row index is not open row index', () => { + beforeEach(() => { + wrapper.vm.rowToogleDetails( + { + toggleDetails: secondToggleDetailsMock, + index: 2, + item: { + data: 'new-item-data', + }, + }, + 2, + ) + }) + + it('closes the open row', () => { + expect(toggleDetailsMock).toBeCalled() + }) + + it('opens the new row', () => { + expect(secondToggleDetailsMock).toBeCalled() + }) + + it('updates slot index', () => { + expect(wrapper.vm.slotIndex).toBe(2) + }) + + it('updates open row', () => { + expect(wrapper.vm.openRow).toEqual({ + toggleDetails: secondToggleDetailsMock, + index: 2, + item: { + data: 'new-item-data', + }, + }) + }) + + it('updates creation user data', () => { + expect(wrapper.vm.creationUserData).toEqual({ data: 'new-item-data' }) + }) + }) + }) +}) From 1644c2938a583c9714fb0fb721dc085c53ce28de Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 9 Feb 2022 11:07:16 +0100 Subject: [PATCH 11/11] coverage admin interface 94% --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c57da1964..9c7f9b7c2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -422,7 +422,7 @@ jobs: report_name: Coverage Admin Interface type: lcov result_path: ./coverage/lcov.info - min_coverage: 93 + min_coverage: 94 token: ${{ github.token }} ##############################################################################