From 268ec332b486503a6e104657d858297a70b4f42a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Sat, 13 Jul 2019 19:21:59 +0200 Subject: [PATCH] Add a first test with `apollo-server-testing` --- backend/src/server.spec.js | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 backend/src/server.spec.js diff --git a/backend/src/server.spec.js b/backend/src/server.spec.js new file mode 100644 index 000000000..6d4ef546d --- /dev/null +++ b/backend/src/server.spec.js @@ -0,0 +1,43 @@ +import { createTestClient } from 'apollo-server-testing' +import createServer from './server' + +/** + * This file is for demonstration purposes. It does not really test the + * `isLoggedIn` query but demonstrates how we can use `apollo-server-testing`. + * All we need to do is to get an instance of `ApolloServer` and maybe we want + * stub out `context` as shown below. + * + */ + +let user +let action +describe('isLoggedIn', () => { + beforeEach(() => { + action = async () => { + const { server } = createServer({ + context: () => { + return { + user, + } + }, + }) + const { query } = createTestClient(server) + + const isLoggedIn = `{ isLoggedIn }` + return query({ query: isLoggedIn }) + } + }) + + it('returns false', async () => { + const expected = expect.objectContaining({ data: { isLoggedIn: false } }) + await expect(action()).resolves.toEqual(expected) + }) + + describe('when authenticated', () => { + it('returns true', async () => { + user = { id: '123' } + const expected = expect.objectContaining({ data: { isLoggedIn: true } }) + await expect(action()).resolves.toEqual(expected) + }) + }) +})