diff --git a/test/resolvers/SystemResolverTests.test.ts b/test/resolvers/SystemResolverTests.test.ts index 673f0a1..8990bf8 100644 --- a/test/resolvers/SystemResolverTests.test.ts +++ b/test/resolvers/SystemResolverTests.test.ts @@ -1,15 +1,12 @@ -import { beforeEach, describe, it } from "@jest/globals"; +import { beforeEach, describe, expect, it } from "@jest/globals"; import { ApolloServer } from "@apollo/server"; import { ServerContext } from "../../src/ServerContext"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { setUpTestServer } from "../testHelpers/apolloSetupHelpers"; -import { generateMockRoutes } from "../generators"; - -// const routes = await generateMockRoutes(); -// await Promise.all(routes.map(async (route) => { -// route.systemId = mockSystem.id; -// await repository.addOrUpdateRoute(route); -// })); +import { generateMockRoutes, generateMockShuttles, generateMockStops } from "../generators"; +import { addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers"; +import { ISystem } from "../../src/entities/entities"; +import assert = require("node:assert"); describe("SystemResolvers", () => { let testServer: ApolloServer; @@ -20,6 +17,26 @@ describe("SystemResolvers", () => { repository = new UnoptimizedInMemoryRepository(); }); + let mockSystem: ISystem; + + beforeEach(async () => { + mockSystem = await addMockSystemToRepository(repository); + }); + + // TODO: Consolidate these into one single method taking an object + async function getResponseFromQueryNeedingSystemId(query: string) { + return await testServer.executeOperation({ + query, + variables: { + systemId: mockSystem.id, + }, + }, { + contextValue: { + repository + }, + }); + } + describe("routes", () => { const query = ` query GetSystemRoutes($systemId: ID!) { @@ -33,6 +50,18 @@ describe("SystemResolvers", () => { `; it("gets routes associated with system id", async () => { + const expectedRoutes = generateMockRoutes(); + await Promise.all(expectedRoutes.map(async (route) => { + route.systemId = mockSystem.id; + await repository.addOrUpdateRoute(route); + })); + + const response = await getResponseFromQueryNeedingSystemId(query); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined() + const routes = (response.body.singleResult.data as any).system.routes; + expect(routes.length === expectedRoutes.length); }); }); @@ -49,7 +78,18 @@ describe("SystemResolvers", () => { `; it("gets stops associated with system id", async () => { + const expectedStops = generateMockStops(); + await Promise.all(expectedStops.map(async (stop) => { + stop.systemId = mockSystem.id; + await repository.addOrUpdateStop(stop); + })); + const response = await getResponseFromQueryNeedingSystemId(query); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined() + const stops = (response.body.singleResult.data as any).system.stops; + expect(stops.length === expectedStops.length); }); }); @@ -141,7 +181,18 @@ describe("SystemResolvers", () => { `; it("gets shuttles associated with system id", async () => { + const expectedShuttles = generateMockShuttles(); + await Promise.all(expectedShuttles.map(async (shuttle) => { + shuttle.systemId = mockSystem.id; + await repository.addOrUpdateShuttle(shuttle); + })); + const response = await getResponseFromQueryNeedingSystemId(query); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined() + const shuttles = (response.body.singleResult.data as any).system.shuttles; + expect(shuttles.length === expectedShuttles.length); }); }); }); \ No newline at end of file