diff --git a/backend/src/graphql/resolver/AdminResolver.test.ts b/backend/src/graphql/resolver/AdminResolver.test.ts index ca6bf0fe7..0ce4c5314 100644 --- a/backend/src/graphql/resolver/AdminResolver.test.ts +++ b/backend/src/graphql/resolver/AdminResolver.test.ts @@ -11,6 +11,7 @@ import { garrickOllivander } from '@/seeds/users/garrick-ollivander' import { deleteUser, unDeleteUser, + searchUsers, createPendingCreation, createPendingCreations, updatePendingCreation, @@ -261,6 +262,160 @@ describe('AdminResolver', () => { }) }) + describe('search users', () => { + const variablesWithoutTextAndFilters = { + searchText: '', + currentPage: 1, + pageSize: 25, + filters: { + filterByActivated: null, + filterByDeleted: null, + }, + } + + describe('unauthenticated', () => { + it('returns an error', async () => { + await expect( + query({ + query: searchUsers, + variables: { + ...variablesWithoutTextAndFilters, + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + errors: [new GraphQLError('401 Unauthorized')], + }), + ) + }) + }) + + describe('authenticated', () => { + describe('without admin rights', () => { + beforeAll(async () => { + user = await userFactory(testEnv, bibiBloxberg) + await query({ + query: login, + variables: { email: 'bibi@bloxberg.de', password: 'Aa12345_' }, + }) + }) + + afterAll(async () => { + await cleanDB() + resetToken() + }) + + it('returns an error', async () => { + await expect( + query({ + query: searchUsers, + variables: { + ...variablesWithoutTextAndFilters, + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + errors: [new GraphQLError('401 Unauthorized')], + }), + ) + }) + }) + + describe('with admin rights', () => { + beforeAll(async () => { + admin = await userFactory(testEnv, peterLustig) + await query({ + query: login, + variables: { email: 'peter@lustig.de', password: 'Aa12345_' }, + }) + + await userFactory(testEnv, bibiBloxberg) + await userFactory(testEnv, stephenHawking) + await userFactory(testEnv, garrickOllivander) + // Wolle await userFactory(testEnv, XXX) + // await userFactory(testEnv, XXX) + }) + + afterAll(async () => { + await cleanDB() + resetToken() + }) + + describe('find', () => { + it('all users', async () => { + await expect( + query({ + query: searchUsers, + variables: { + ...variablesWithoutTextAndFilters, + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + searchUsers: { + userCount: 4, + userList: expect.arrayContaining([ + expect.objectContaining({ + email: 'bibi@bloxberg.de', + }), + expect.objectContaining({ + email: 'garrick@ollivander.com', + }), + expect.objectContaining({ + email: 'peter@lustig.de', + }), + expect.objectContaining({ + email: 'stephen@hawking.uk', + }), + ]), + }, + }, + }), + ) + }) + + it.only('users with unchecked email', async () => { + await expect( + query({ + query: searchUsers, + variables: { + ...variablesWithoutTextAndFilters, + filters: { + filterByActivated: false, + filterByDeleted: null, + }, + }, + }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + searchUsers: { + userCount: 4, + userList: expect.arrayContaining([ + expect.objectContaining({ + email: 'bibi@bloxberg.de', + }), + expect.objectContaining({ + email: 'garrick@ollivander.com', + }), + expect.objectContaining({ + email: 'peter@lustig.de', + }), + expect.objectContaining({ + email: 'stephen@hawking.uk', + }), + ]), + }, + }, + }), + ) + }) + }) + }) + }) + }) + describe('creations', () => { const variables = { email: 'bibi@bloxberg.de',