diff --git a/test/resolvers/ShuttleResolverTests.test.ts b/test/resolvers/ShuttleResolverTests.test.ts index 4fade9f..9869a02 100644 --- a/test/resolvers/ShuttleResolverTests.test.ts +++ b/test/resolvers/ShuttleResolverTests.test.ts @@ -4,7 +4,7 @@ import { ServerContext } from "../../src/ServerContext"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { readFileSync } from "fs"; import { MergedResolvers } from "../../src/MergedResolvers"; -import { generateMockEtas, generateMockShuttles, generateMockSystems } from "../generators"; +import { generateMockEtas, generateMockRoutes, generateMockShuttles, generateMockSystems } from "../generators"; import { IShuttle, ISystem } from "../../src/entities/entities"; import assert = require("node:assert"); @@ -160,4 +160,57 @@ describe("ShuttleResolvers", () => { }); }); + + describe("route", () => { + const query = ` + query GetShuttleRoute($systemId: ID!, $shuttleId: ID!) { + system(id: $systemId) { + shuttle(id: $shuttleId) { + route { + color + id + name + polylineCoordinates { + latitude + longitude + } + } + } + } + } + ` + + async function getResponseForQuery() { + return await testServer.executeOperation({ + query, + variables: { + systemId: mockSystem.id, + shuttleId: mockShuttle.id, + } + }, { + contextValue: { + repository, + } + }); + } + + it("returns the route if it exists", async () => { + const mockRoute = generateMockRoutes()[0]; + await repository.addOrUpdateRoute(mockRoute); + + const response = await getResponseForQuery(); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect((response.body.singleResult.data as any).system.shuttle.route.id).toEqual(mockRoute.id); + }); + + it("returns null if there is no route", async () => { + const response = await getResponseForQuery(); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect((response.body.singleResult.data as any).system.shuttle.route).toBeNull(); + }); + }); }); \ No newline at end of file