diff --git a/test/resolvers/SystemResolverTests.test.ts b/test/resolvers/SystemResolverTests.test.ts index 4fac792..c098aff 100644 --- a/test/resolvers/SystemResolverTests.test.ts +++ b/test/resolvers/SystemResolverTests.test.ts @@ -4,7 +4,11 @@ import { ServerContext } from "../../src/ServerContext"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { setUpTestServer } from "../testHelpers/apolloSetupHelpers"; import { generateMockRoutes, generateMockShuttles, generateMockStops } from "../generators"; -import { addMockStopToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers"; +import { + addMockRouteToRepository, + addMockStopToRepository, + addMockSystemToRepository +} from "../testHelpers/repositorySetupHelpers"; import { ISystem } from "../../src/entities/entities"; import assert = require("node:assert"); @@ -161,27 +165,70 @@ describe("SystemResolvers", () => { }); describe("route", () => { - const query = ` - query GetSystemRoute($systemId: ID!, $routeId: ID!) { - system(id: $systemId) { - route(id: $routeId) { - id - name + async function getResponseForRouteQuery(routeId: string) { + const query = ` + query GetSystemRoute($systemId: ID!, $routeId: ID!) { + system(id: $systemId) { + route(id: $routeId) { + id + name + } } } + `; + + return await testServer.executeOperation({ + query, + variables: { + systemId: mockSystem.id, + routeId, + }, + }, { + contextValue: { + repository, + } + }); } - `; it("gets the route with the correct id", async () => { + const mockRoute = await addMockRouteToRepository(repository, mockSystem.id); + const response = await getResponseForRouteQuery(mockRoute.id); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + + const route = (response.body.singleResult.data as any).system.route; + expect(route.id).toEqual(mockRoute.id); + expect(route.name).toEqual(mockRoute.name); }); it("returns null if the route isn't associated with the system", async () => { + const updatedSystem = { + ...mockSystem, + id: "2", + } + await repository.addOrUpdateSystem(updatedSystem); + const mockRoute = await addMockRouteToRepository(repository, updatedSystem.id); + + const response = await getResponseForRouteQuery(mockRoute.id); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + + const route = (response.body.singleResult.data as any).system.route; + expect(route).toBeNull(); }); it("returns null if there is no route", async () => { + const response = await getResponseForRouteQuery("nonexistent-route-id"); + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + + const route = (response.body.singleResult.data as any).system.route; + expect(route).toBeNull(); }); });