diff --git a/test/resolvers/StopResolverTests.test.ts b/test/resolvers/StopResolverTests.test.ts index b948f7c..c7a23b3 100644 --- a/test/resolvers/StopResolverTests.test.ts +++ b/test/resolvers/StopResolverTests.test.ts @@ -3,7 +3,7 @@ import { ApolloServer } from "@apollo/server"; import { ServerContext } from "../../src/ServerContext"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { setUpTestServer } from "../testHelpers/apolloSetupHelpers"; -import { generateMockOrderedStops, generateMockStops, generateMockSystems } from "../generators"; +import { generateMockEtas, generateMockOrderedStops, generateMockStops, generateMockSystems } from "../generators"; import { IStop, ISystem } from "../../src/entities/entities"; import assert = require("node:assert"); @@ -31,6 +31,20 @@ describe("StopResolvers", () => { await repository.addOrUpdateStop(mockStop); }) + async function getResponseForQuery(query: string) { + return await testServer.executeOperation({ + query, + variables: { + systemId: mockSystem.id, + stopId: mockStop.id, + }, + }, { + contextValue: { + repository, + } + }); + } + describe("orderedStops", () => { const query = ` query GetOrderedStops($systemId: ID!, $stopId: ID!) { @@ -45,19 +59,6 @@ describe("StopResolvers", () => { } ` - async function getResponseForQuery() { - return await testServer.executeOperation({ - query, - variables: { - systemId: mockSystem.id, - stopId: mockStop.id, - }, - }, { - contextValue: { - repository, - } - }); - } it("returns ordered stops if they exist for the stop ID", async () => { let mockOrderedStops = generateMockOrderedStops(); @@ -67,7 +68,7 @@ describe("StopResolvers", () => { await repository.addOrUpdateOrderedStop(orderedStop); })); - const response = await getResponseForQuery(); + const response = await getResponseForQuery(query); assert(response.body.kind === "single"); expect(response.body.singleResult.errors).toBeUndefined(); @@ -75,7 +76,7 @@ describe("StopResolvers", () => { }); it("returns empty array if no ordered stops exist", async () => { - const response = await getResponseForQuery(); + const response = await getResponseForQuery(query); assert(response.body.kind === "single"); expect(response.body.singleResult.errors).toBeUndefined(); @@ -84,12 +85,39 @@ describe("StopResolvers", () => { }); describe("etas", () => { - it("returns ETAs if they exist for the stop ID", async () => { + const query = ` + query GetEtas($systemId: ID!, $stopId: ID!) { + system(id: $systemId) { + stop(id: $stopId) { + etas { + secondsRemaining + } + } + } + } + ` + it("returns ETAs if they exist for the stop ID", async () => { + let mockEtas = generateMockEtas(); + mockEtas = mockEtas.filter((eta) => eta.stopId === mockEtas[0].stopId); + await Promise.all(mockEtas.map(async eta => { + eta.stopId = mockStop.id; + await repository.addOrUpdateEta(eta); + })); + + const response = await getResponseForQuery(query); + + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect((response.body.singleResult.data as any).system.stop.etas).toHaveLength(mockEtas.length); }); it("returns empty array if no ETAs exist", async () => { + const response = await getResponseForQuery(query); + assert(response.body.kind === "single"); + expect(response.body.singleResult.errors).toBeUndefined(); + expect((response.body.singleResult.data as any).system.stop.etas).toHaveLength(0); }); }); }); \ No newline at end of file