Move all tests to subdirectories underneath code to be tested
This commit is contained in:
147
src/resolvers/__tests__/RouteResolverTests.test.ts
Normal file
147
src/resolvers/__tests__/RouteResolverTests.test.ts
Normal file
@@ -0,0 +1,147 @@
|
||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||
import { setupTestServerContext, setupTestServerHolder } from "../../../test/testHelpers/apolloTestServerHelpers";
|
||||
import {
|
||||
addMockRouteToRepository,
|
||||
addMockStopToRepository
|
||||
} from "../../../test/testHelpers/repositorySetupHelpers";
|
||||
import { generateMockOrderedStops, generateMockShuttles } from "../../../test/testHelpers/mockDataGenerators";
|
||||
import { IRoute, IStop } from "../../entities/ShuttleRepositoryEntities";
|
||||
import assert = require("node:assert");
|
||||
import { InterchangeSystem } from "../../entities/InterchangeSystem";
|
||||
|
||||
describe("RouteResolvers", () => {
|
||||
const holder = setupTestServerHolder();
|
||||
const context = setupTestServerContext();
|
||||
|
||||
let mockSystem: InterchangeSystem;
|
||||
let mockRoute: IRoute;
|
||||
let mockStop: IStop;
|
||||
|
||||
beforeEach(async () => {
|
||||
mockSystem = context.systems[0];
|
||||
const systemId = mockSystem.id;
|
||||
|
||||
mockRoute = await addMockRouteToRepository(context.systems[0].shuttleRepository, systemId);
|
||||
mockStop = await addMockStopToRepository(context.systems[0].shuttleRepository, systemId);
|
||||
});
|
||||
|
||||
|
||||
describe("shuttles", () => {
|
||||
async function getResponseForShuttlesQuery() {
|
||||
const query = `
|
||||
query GetRouteShuttles($systemId: ID!, $routeId: ID!) {
|
||||
system(id: $systemId) {
|
||||
route(id: $routeId) {
|
||||
shuttles {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
return await holder.testServer.executeOperation({
|
||||
query,
|
||||
variables: {
|
||||
systemId: mockSystem.id,
|
||||
routeId: mockRoute.id,
|
||||
},
|
||||
}, {
|
||||
contextValue: context
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
it("returns shuttle array if there are shuttles", async () => {
|
||||
const expectedShuttles = generateMockShuttles();
|
||||
const expectedShuttle = expectedShuttles[0];
|
||||
expectedShuttle.systemId = mockSystem.id;
|
||||
expectedShuttle.routeId = mockRoute.id;
|
||||
await context.systems[0].shuttleRepository.addOrUpdateShuttle(expectedShuttle);
|
||||
|
||||
const response = await getResponseForShuttlesQuery();
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined()
|
||||
const shuttle = (response.body.singleResult.data as
|
||||
any).system.route.shuttles[0];
|
||||
expect(shuttle.id).toEqual(expectedShuttle.id);
|
||||
expect(shuttle.name).toEqual(expectedShuttle.name);
|
||||
});
|
||||
|
||||
it("returns empty array if there are no shuttles", async () => {
|
||||
const response = await getResponseForShuttlesQuery();
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined()
|
||||
const shuttles = (response.body.singleResult.data as
|
||||
any).system.route.shuttles;
|
||||
expect(shuttles.length).toEqual(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe("orderedStop", () => {
|
||||
async function getResponseForOrderedStopQuery() {
|
||||
const query = `
|
||||
query GetRouteOrderedStop($systemId: ID!, $routeId: ID!, $stopId: ID!) {
|
||||
system(id: $systemId) {
|
||||
route(id: $routeId) {
|
||||
orderedStop(forStopId: $stopId) {
|
||||
stopId
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
return await holder.testServer.executeOperation({
|
||||
query,
|
||||
variables: {
|
||||
systemId: mockSystem.id,
|
||||
routeId: mockRoute.id,
|
||||
stopId: mockStop.id,
|
||||
}
|
||||
}, {
|
||||
contextValue: context
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
it("returns ordered stop using provided data", async () => {
|
||||
const orderedStops = generateMockOrderedStops();
|
||||
const expectedOrderedStop = orderedStops[0];
|
||||
expectedOrderedStop.stopId = mockStop.id;
|
||||
expectedOrderedStop.routeId = mockRoute.id;
|
||||
await context.systems[0].shuttleRepository.addOrUpdateOrderedStop(expectedOrderedStop);
|
||||
|
||||
const response = await getResponseForOrderedStopQuery();
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined();
|
||||
|
||||
const orderedStop = (response.body.singleResult.data as
|
||||
any).system.route.orderedStop;
|
||||
expect(orderedStop.stopId).toEqual(expectedOrderedStop.stopId);
|
||||
});
|
||||
|
||||
it("returns null if the stop doesn't exist", async () => {
|
||||
const orderedStops = generateMockOrderedStops();
|
||||
const expectedOrderedStop = orderedStops[0];
|
||||
expectedOrderedStop.stopId = mockStop.id;
|
||||
expectedOrderedStop.routeId = mockRoute.id;
|
||||
await context.systems[0].shuttleRepository.addOrUpdateOrderedStop(expectedOrderedStop);
|
||||
|
||||
await context.systems[0].shuttleRepository.removeStopIfExists(mockStop.id);
|
||||
|
||||
const response = await getResponseForOrderedStopQuery();
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined();
|
||||
|
||||
const orderedStop = (response.body.singleResult.data as
|
||||
any).system.route.orderedStop;
|
||||
expect(orderedStop).toBeNull();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user