diff --git a/test/resolvers/QueryResolverTests.test.ts b/test/resolvers/QueryResolverTests.test.ts index 3da3015..c806a9e 100644 --- a/test/resolvers/QueryResolverTests.test.ts +++ b/test/resolvers/QueryResolverTests.test.ts @@ -24,12 +24,17 @@ describe("QueryResolvers", () => { repository = new UnoptimizedInMemoryRepository(); }); + async function addMockSystems() { + const systems = generateMockSystems(); + await Promise.all(systems.map(async (system) => { + await repository.addOrUpdateSystem(system); + })); + return systems; + } + describe("systems", () => { it("returns systems from the repository", async () => { - const systems = generateMockSystems(); - await Promise.all(systems.map(async (system) => { - await repository.addOrUpdateSystem(system); - })); + const systems = await addMockSystems(); const query = ` query GetSystems @@ -38,7 +43,7 @@ describe("QueryResolvers", () => { name } } - ` + `; const response = await testServer.executeOperation({ query, @@ -55,16 +60,50 @@ describe("QueryResolvers", () => { }); describe("system", () => { + const query = ` + query GetSystem($id: ID!) + { + system(id: $id) { + name + } + } + `; + it("returns a system for an ID from the repository", async () => { + const systems = await addMockSystems(); + const systemToGet = systems[1]; - }); - - it("returns null if no id provided", async () => { + const response = await testServer.executeOperation({ + query, + variables: { + id: systemToGet.id, + } + }, { + contextValue: { + repository, + } + }); + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect(response.body.singleResult.data?.system).toBeDefined(); }); it("returns null if there is no system", async () => { + const response = await testServer.executeOperation({ + query, + variables: { + id: "nonexistent-id", + } + }, { + contextValue: { + repository, + } + }); + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect(response.body.singleResult.data?.system).toBeNull(); }); }); });