From 879ff45dfd4abff83d82bf219d1f35a999a3059e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 19 May 2022 17:41:16 +0200 Subject: [PATCH 1/3] Use if statement for 'filters' object may be null --- backend/src/graphql/resolver/AdminResolver.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index fe4075cd1..8c3d71b73 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -57,12 +57,14 @@ export class AdminResolver { const userRepository = getCustomRepository(UserRepository) const filterCriteria: ObjectLiteral[] = [] - if (filters && filters.filterByActivated !== null) { - filterCriteria.push({ emailChecked: filters.filterByActivated }) - } + if (filters) { + if (filters.filterByActivated !== null) { + filterCriteria.push({ emailChecked: filters.filterByActivated }) + } - if (filters && filters.filterByDeleted !== null) { - filterCriteria.push({ deletedAt: filters.filterByDeleted ? Not(IsNull()) : IsNull() }) + if (filters.filterByDeleted !== null) { + filterCriteria.push({ deletedAt: filters.filterByDeleted ? Not(IsNull()) : IsNull() }) + } } const userFields = ['id', 'firstName', 'lastName', 'email', 'emailChecked', 'deletedAt'] From 78c403e268bc272041f69f83aa6adace82ba2a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 19 May 2022 18:10:19 +0200 Subject: [PATCH 2/3] Refactor forgotten Creation.vue --- admin/src/pages/Creation.spec.js | 24 ++++++--- admin/src/pages/Creation.vue | 6 ++- admin/src/pages/UserSearch.spec.js | 2 +- .../graphql/resolver/AdminResolver.test.ts | 50 +++++++++++-------- 4 files changed, 50 insertions(+), 32 deletions(-) diff --git a/admin/src/pages/Creation.spec.js b/admin/src/pages/Creation.spec.js index 98c03d277..432cbe19b 100644 --- a/admin/src/pages/Creation.spec.js +++ b/admin/src/pages/Creation.spec.js @@ -71,8 +71,10 @@ describe('Creation', () => { searchText: '', currentPage: 1, pageSize: 25, - filterByActivated: true, - filterByDeleted: false, + filters: { + filterByActivated: true, + filterByDeleted: false, + }, }, }), ) @@ -271,8 +273,10 @@ describe('Creation', () => { searchText: 'XX', currentPage: 1, pageSize: 25, - filterByActivated: true, - filterByDeleted: false, + filters: { + filterByActivated: true, + filterByDeleted: false, + }, }, }), ) @@ -288,8 +292,10 @@ describe('Creation', () => { searchText: '', currentPage: 1, pageSize: 25, - filterByActivated: true, - filterByDeleted: false, + filters: { + filterByActivated: true, + filterByDeleted: false, + }, }, }), ) @@ -305,8 +311,10 @@ describe('Creation', () => { searchText: '', currentPage: 2, pageSize: 25, - filterByActivated: true, - filterByDeleted: false, + filters: { + filterByActivated: true, + filterByDeleted: false, + }, }, }), ) diff --git a/admin/src/pages/Creation.vue b/admin/src/pages/Creation.vue index 54bc0d735..17962bfff 100644 --- a/admin/src/pages/Creation.vue +++ b/admin/src/pages/Creation.vue @@ -102,8 +102,10 @@ export default { searchText: this.criteria, currentPage: this.currentPage, pageSize: this.perPage, - filterByActivated: true, - filterByDeleted: false, + filters: { + filterByActivated: true, + filterByDeleted: false, + }, }, fetchPolicy: 'network-only', }) diff --git a/admin/src/pages/UserSearch.spec.js b/admin/src/pages/UserSearch.spec.js index 1a23b4292..a1d809a66 100644 --- a/admin/src/pages/UserSearch.spec.js +++ b/admin/src/pages/UserSearch.spec.js @@ -7,7 +7,7 @@ const localVue = global.localVue const apolloQueryMock = jest.fn().mockResolvedValue({ data: { searchUsers: { - userCount: 1, + userCount: 4, userList: [ { userId: 1, diff --git a/backend/src/graphql/resolver/AdminResolver.test.ts b/backend/src/graphql/resolver/AdminResolver.test.ts index 1df80aa1a..4771232ea 100644 --- a/backend/src/graphql/resolver/AdminResolver.test.ts +++ b/backend/src/graphql/resolver/AdminResolver.test.ts @@ -320,6 +320,21 @@ describe('AdminResolver', () => { }) describe('with admin rights', () => { + const allUsers = { + bibi: expect.objectContaining({ + email: 'bibi@bloxberg.de', + }), + garrick: expect.objectContaining({ + email: 'garrick@ollivander.com', + }), + peter: expect.objectContaining({ + email: 'peter@lustig.de', + }), + stephen: expect.objectContaining({ + email: 'stephen@hawking.uk', + }), + } + beforeAll(async () => { admin = await userFactory(testEnv, peterLustig) await query({ @@ -337,23 +352,8 @@ describe('AdminResolver', () => { resetToken() }) - describe('find', () => { - const allUsers = { - bibi: expect.objectContaining({ - email: 'bibi@bloxberg.de', - }), - garrick: expect.objectContaining({ - email: 'garrick@ollivander.com', - }), - peter: expect.objectContaining({ - email: 'peter@lustig.de', - }), - stephen: expect.objectContaining({ - email: 'stephen@hawking.uk', - }), - } - - it('all users by "filters === null"', async () => { + describe('without any filters', () => { + it('finds all users', async () => { await expect( query({ query: searchUsers, @@ -372,8 +372,10 @@ describe('AdminResolver', () => { }), ) }) + }) - it('all users by "filterByActivated === null && filterByDeleted === null"', async () => { + describe('all filters are null', () => { + it('finds all users', async () => { await expect( query({ query: searchUsers, @@ -396,8 +398,10 @@ describe('AdminResolver', () => { }), ) }) + }) - it('users with unchecked email', async () => { + describe('filter by unchecked email', () => { + it('finds only users with unchecked email', async () => { await expect( query({ query: searchUsers, @@ -420,8 +424,10 @@ describe('AdminResolver', () => { }), ) }) + }) - it('users with deleted account', async () => { + describe('filter by deleted users', () => { + it('finds only users with deleted account', async () => { await expect( query({ query: searchUsers, @@ -444,8 +450,10 @@ describe('AdminResolver', () => { }), ) }) + }) - it('no users with deleted account and unchecked email', async () => { + describe('filter by deleted account and unchecked email', () => { + it('finds no users', async () => { await expect( query({ query: searchUsers, From 7325ed53ec150b90fb8d67f5eec8bc79781ca268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 19 May 2022 18:17:17 +0200 Subject: [PATCH 3/3] Set backend 'min_coverage' to '66' --- .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 8680c9203..bb2441701 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -528,7 +528,7 @@ jobs: report_name: Coverage Backend type: lcov result_path: ./backend/coverage/lcov.info - min_coverage: 64 + min_coverage: 66 token: ${{ github.token }} ##########################################################################