add tests to get stops, routes, and shuttles

This commit is contained in:
2025-01-28 21:31:56 -08:00
parent b3cf13ec4e
commit 88d02887e7

View File

@@ -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<ServerContext>;
@@ -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);
});
});
});