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 }} ########################################################################## diff --git a/admin/src/pages/Creation.spec.js b/admin/src/pages/Creation.spec.js index 47a111215..9524fc5d6 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, - byActivated: true, // Wolle: used 'filters' object? - byDeleted: false, + filters: { + byActivated: true, + byDeleted: false, + }, }, }), ) @@ -271,8 +273,10 @@ describe('Creation', () => { searchText: 'XX', currentPage: 1, pageSize: 25, - byActivated: true, // Wolle: used 'filters' object? - byDeleted: false, + filters: { + byActivated: true, + byDeleted: false, + }, }, }), ) @@ -288,8 +292,10 @@ describe('Creation', () => { searchText: '', currentPage: 1, pageSize: 25, - byActivated: true, // Wolle: used 'filters' object? - byDeleted: false, + filters: { + byActivated: true, + byDeleted: false, + }, }, }), ) @@ -305,8 +311,10 @@ describe('Creation', () => { searchText: '', currentPage: 2, pageSize: 25, - byActivated: true, // Wolle: used 'filters' object? - byDeleted: false, + filters: { + byActivated: true, + byDeleted: false, + }, }, }), ) diff --git a/admin/src/pages/Creation.vue b/admin/src/pages/Creation.vue index 8d3f3edaa..9e554ff92 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, - byActivated: true, // Wolle: used 'filters' object? - byDeleted: false, + filters: { + byActivated: true, + byDeleted: false, + }, }, fetchPolicy: 'network-only', }) diff --git a/admin/src/pages/UserSearch.spec.js b/admin/src/pages/UserSearch.spec.js index e990fd0ad..7d8be648f 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 b4a4f0d46..9181943d0 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 "byActivated === null && byDeleted === 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, diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 0cf57ac53..4aec5ca67 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.byActivated !== null) { - filterCriteria.push({ emailChecked: filters.byActivated }) - } + if (filters) { + if (filters.byActivated !== null) { + filterCriteria.push({ emailChecked: filters.byActivated }) + } - if (filters && filters.byDeleted !== null) { - filterCriteria.push({ deletedAt: filters.byDeleted ? Not(IsNull()) : IsNull() }) + if (filters.byDeleted !== null) { + filterCriteria.push({ deletedAt: filters.byDeleted ? Not(IsNull()) : IsNull() }) + } } const userFields = ['id', 'firstName', 'lastName', 'email', 'emailChecked', 'deletedAt']