From c647da4931d0a80b55d5c79558e9434d8fef8437 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Thu, 23 Jan 2025 03:58:49 -0800 Subject: [PATCH] add test for systems property of query resolver --- test/resolvers/QueryResolverTests.test.ts | 40 ++++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/test/resolvers/QueryResolverTests.test.ts b/test/resolvers/QueryResolverTests.test.ts index cb2e517..9f189ec 100644 --- a/test/resolvers/QueryResolverTests.test.ts +++ b/test/resolvers/QueryResolverTests.test.ts @@ -1,26 +1,56 @@ -import { beforeEach, describe } from "@jest/globals"; +import { beforeEach, describe, expect, it } from "@jest/globals"; import { ApolloServer } from "@apollo/server"; import { ServerContext } from "../../src/ServerContext"; import { readFileSync } from "fs"; import { MergedResolvers } from "../../src/MergedResolvers"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; -import { loadTestData } from "../../src/loaders/loadTestData"; +import { generateMockSystems } from "../generators"; +import assert = require("node:assert"); // See Apollo documentation for integration test guide // https://www.apollographql.com/docs/apollo-server/testing/testing describe("QueryResolvers", () => { - let apolloServer: ApolloServer; + let testServer: ApolloServer; let repository: UnoptimizedInMemoryRepository; beforeEach(async () => { const typeDefs = readFileSync("./schema.graphqls", "utf8"); - apolloServer = new ApolloServer({ + testServer = new ApolloServer({ typeDefs, resolvers: MergedResolvers, }); repository = new UnoptimizedInMemoryRepository(); - await loadTestData(repository); }); + + describe("systems", () => { + it("returns systems from the repository", async () => { + const systems = generateMockSystems(); + await Promise.all(systems.map(async (system) => { + await repository.addOrUpdateSystem(system); + })); + + const query = ` + query GetSystems + { + systems { + name + } + } + ` + + const response = await testServer.executeOperation({ + query, + }, { + contextValue: { + repository, + }, + }); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect(response.body.singleResult.data?.systems).toHaveLength(systems.length); + }); + }) });