Writing resolver tests

This commit is contained in:
Wolfgang Huß 2022-05-19 10:16:23 +02:00
parent c5ac4140a8
commit cde9b171af
3 changed files with 50 additions and 31 deletions

View File

@ -1,4 +1,4 @@
import { Args, ArgsType, Field, Int } from 'type-graphql' import { ArgsType, Field, Int } from 'type-graphql'
import SearchUsersFilters from '@arg/SearchUsersFilters' import SearchUsersFilters from '@arg/SearchUsersFilters'
@ArgsType() @ArgsType()

View File

@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { convertObjValuesToArray } from '@/util/utilities'
import { testEnvironment, resetToken, cleanDB } from '@test/helpers' import { testEnvironment, resetToken, cleanDB } from '@test/helpers'
import { userFactory } from '@/seeds/factory/user' import { userFactory } from '@/seeds/factory/user'
import { creationFactory } from '@/seeds/factory/creation' import { creationFactory } from '@/seeds/factory/creation'
@ -342,6 +343,21 @@ describe('AdminResolver', () => {
}) })
describe('find', () => { 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', async () => { it('all users', async () => {
await expect( await expect(
query({ query({
@ -355,27 +371,14 @@ describe('AdminResolver', () => {
data: { data: {
searchUsers: { searchUsers: {
userCount: 4, userCount: 4,
userList: expect.arrayContaining([ userList: expect.arrayContaining(convertObjValuesToArray(allUsers)),
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 () => { it('users with unchecked email', async () => {
await expect( await expect(
query({ query({
query: searchUsers, query: searchUsers,
@ -391,21 +394,32 @@ describe('AdminResolver', () => {
expect.objectContaining({ expect.objectContaining({
data: { data: {
searchUsers: { searchUsers: {
userCount: 4, userCount: 1,
userList: expect.arrayContaining([ userList: expect.arrayContaining([allUsers.garrick]),
expect.objectContaining({ },
email: 'bibi@bloxberg.de', },
}), }),
expect.objectContaining({ )
email: 'garrick@ollivander.com', })
it('users with deleted account', async () => {
await expect(
query({
query: searchUsers,
variables: {
...variablesWithoutTextAndFilters,
filters: {
filterByActivated: null,
filterByDeleted: true,
},
},
}), }),
).resolves.toEqual(
expect.objectContaining({ expect.objectContaining({
email: 'peter@lustig.de', data: {
}), searchUsers: {
expect.objectContaining({ userCount: 1,
email: 'stephen@hawking.uk', userList: expect.arrayContaining([allUsers.stephen]),
}),
]),
}, },
}, },
}), }),

View File

@ -0,0 +1,5 @@
export const convertObjValuesToArray = (obj: { [x: string]: string }): Array<string> => {
return Object.keys(obj).map(function (key) {
return obj[key]
})
}