diff --git a/jest.config.js b/jest.config.js index aa48633..a79212b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,4 +11,5 @@ module.exports = { }, }, setupFiles: ['./test/testSetup.ts'], + setupFilesAfterEnv: ['./test/testSetupAfterEnv.ts'], } diff --git a/package.json b/package.json index dba0ae1..0e1629b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "prisma": { "seed": "ts-node prisma/seed.ts" - }, + }, "dependencies": { "@apollo/server": "^4.9.5", "@prisma/client": "^5.6.0", diff --git a/src/graphql/resolvers/HelloResolver.spec.ts b/src/graphql/resolvers/HelloResolver.spec.ts index 99e96c9..0ad4cbc 100644 --- a/src/graphql/resolvers/HelloResolver.spec.ts +++ b/src/graphql/resolvers/HelloResolver.spec.ts @@ -1,5 +1,6 @@ import { ApolloServer } from '@apollo/server' +import { prisma } from '#src/prisma' import { createServer } from '#src/server/server' let testServer: ApolloServer @@ -9,19 +10,44 @@ beforeAll(async () => { }) describe('HelloResolver', () => { - it('return "Hello World!"', async () => { - const response = await testServer.executeOperation({ - query: '{ hello { hello } }', - }) - expect(response.body).toMatchObject({ - kind: 'single', - singleResult: { - data: { - hello: { - hello: 'Hello world!', + describe('with no data', () => { + it('returns "no data found"', async () => { + const response = await testServer.executeOperation({ + query: '{ hello { hello } }', + }) + expect(response.body).toMatchObject({ + kind: 'single', + singleResult: { + data: { + hello: { + hello: 'no data found', + }, }, }, - }, + }) + }) + }) + + describe('with data', () => { + it('returns "Hello World!"', async () => { + await prisma.hello.create({ + data: { + text: 'Hello World!', + }, + }) + const response = await testServer.executeOperation({ + query: '{ hello { hello } }', + }) + expect(response.body).toMatchObject({ + kind: 'single', + singleResult: { + data: { + hello: { + hello: 'Hello World!', + }, + }, + }, + }) }) }) }) diff --git a/src/graphql/resolvers/HelloResolver.ts b/src/graphql/resolvers/HelloResolver.ts index 17ea6ad..911d325 100644 --- a/src/graphql/resolvers/HelloResolver.ts +++ b/src/graphql/resolvers/HelloResolver.ts @@ -8,6 +8,6 @@ export class HelloResolver { @Query(() => Hello) async hello(): Promise { const data = await prisma.hello.findFirst() - return new Hello(data?.text ?? 'Hello World!') + return new Hello(data?.text ?? 'no data found') } } diff --git a/test/helpers.ts b/test/helpers.ts new file mode 100644 index 0000000..d2250e1 --- /dev/null +++ b/test/helpers.ts @@ -0,0 +1,9 @@ +import { prisma } from '#src/prisma' + +export const deleteAll = async () => { + await prisma.hello.deleteMany() +} + +export const disconnect = async () => { + prisma.$disconnect() +} diff --git a/test/testSetupAfterEnv.ts b/test/testSetupAfterEnv.ts new file mode 100644 index 0000000..e0e56a6 --- /dev/null +++ b/test/testSetupAfterEnv.ts @@ -0,0 +1,10 @@ +import { deleteAll, disconnect } from './helpers' + +beforeAll(async () => { + await deleteAll() +}) + +afterAll(async () => { + await deleteAll() + await disconnect() +})