mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
do the same for ordered stops
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { IRoute, IShuttle, IStop, ISystem } from "../src/entities/entities";
|
||||
import { IOrderedStop, IRoute, IShuttle, IStop, ISystem } from "../src/entities/entities";
|
||||
|
||||
// Use a single set of generators in case any of the
|
||||
// interfaces change in the future
|
||||
@@ -33,4 +33,13 @@ export function generateMockStops(): IStop[] {
|
||||
{ id: "st2", name: "Stop B", systemId: "sys2", coordinates: { latitude: 15, longitude: 25 } },
|
||||
{ id: "st3", name: "Stop C", systemId: "sys3", coordinates: { latitude: 30, longitude: 40 } },
|
||||
];
|
||||
}
|
||||
|
||||
export function generateMockOrderedStops(): IOrderedStop[] {
|
||||
return [
|
||||
{ stopId: "st1", routeId: "r1", position: 1 },
|
||||
{ stopId: "st1", routeId: "r2", position: 2 },
|
||||
{ stopId: "st2", routeId: "r1", position: 3 },
|
||||
{ stopId: "st2", routeId: "r2", position: 4 },
|
||||
];
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
import { beforeEach, describe, expect, test } from "@jest/globals";
|
||||
import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository";
|
||||
import { generateMockRoutes, generateMockShuttles, generateMockStops, generateMockSystems } from "../generators";
|
||||
import {
|
||||
generateMockOrderedStops,
|
||||
generateMockRoutes,
|
||||
generateMockShuttles,
|
||||
generateMockStops,
|
||||
generateMockSystems
|
||||
} from "../generators";
|
||||
|
||||
// For repositories created in the future, reuse core testing
|
||||
// logic from here and differentiate setup (e.g. creating mocks)
|
||||
// Do this by creating a function which takes a GetterRepository
|
||||
// or GetterSetterRepository instance
|
||||
|
||||
// Full disclosure: most of this was generated by ChatGPT
|
||||
// https://chatgpt.com/share/67902072-3adc-800d-bd22-06f7b3e6f4a4
|
||||
|
||||
describe("UnoptimizedInMemoryRepository", () => {
|
||||
let repository: UnoptimizedInMemoryRepository;
|
||||
|
||||
@@ -230,14 +233,15 @@ describe("UnoptimizedInMemoryRepository", () => {
|
||||
|
||||
describe("getOrderedStopByRouteAndStopId", () => {
|
||||
test("gets an ordered stop by route ID and stop ID", async () => {
|
||||
const mockOrderedStop = {
|
||||
routeId: "r1",
|
||||
stopId: "st1",
|
||||
position: 1,
|
||||
};
|
||||
await repository.addOrUpdateOrderedStop(mockOrderedStop);
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
for (const orderedStop of mockOrderedStops) {
|
||||
await repository.addOrUpdateOrderedStop(orderedStop);
|
||||
}
|
||||
|
||||
const result = await repository.getOrderedStopByRouteAndStopId("r1", "st1");
|
||||
const mockOrderedStop = mockOrderedStops[0];
|
||||
const { routeId, stopId } = mockOrderedStop;
|
||||
|
||||
const result = await repository.getOrderedStopByRouteAndStopId(routeId, stopId);
|
||||
expect(result).toEqual(mockOrderedStop);
|
||||
});
|
||||
|
||||
@@ -249,11 +253,7 @@ describe("UnoptimizedInMemoryRepository", () => {
|
||||
|
||||
describe("getOrderedStopsByStopId", () => {
|
||||
test("gets all ordered stops for a specific stop ID", async () => {
|
||||
const mockOrderedStops = [
|
||||
{ stopId: "st1", routeId: "r1", position: 1 },
|
||||
{ stopId: "st1", routeId: "r2", position: 2 },
|
||||
{ stopId: "st2", routeId: "r3", position: 3 },
|
||||
];
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
for (const orderedStop of mockOrderedStops) {
|
||||
await repository.addOrUpdateOrderedStop(orderedStop);
|
||||
}
|
||||
@@ -270,11 +270,7 @@ describe("UnoptimizedInMemoryRepository", () => {
|
||||
|
||||
describe("getOrderedStopsByRouteId", () => {
|
||||
test("gets all ordered stops for a specific route ID", async () => {
|
||||
const mockOrderedStops = [
|
||||
{ stopId: "st1", routeId: "r1", position: 1 },
|
||||
{ stopId: "st2", routeId: "r1", position: 2 },
|
||||
{ stopId: "st3", routeId: "r2", position: 3 },
|
||||
];
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
for (const orderedStop of mockOrderedStops) {
|
||||
await repository.addOrUpdateOrderedStop(orderedStop);
|
||||
}
|
||||
@@ -391,22 +387,25 @@ describe("UnoptimizedInMemoryRepository", () => {
|
||||
|
||||
describe("addOrUpdateOrderedStop", () => {
|
||||
test("adds a new ordered stop if nonexistent", async () => {
|
||||
const newOrderedStop = { routeId: "route1", stopId: "stop1", position: 1 };
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
const newOrderedStop = mockOrderedStops[0];
|
||||
|
||||
await repository.addOrUpdateOrderedStop(newOrderedStop);
|
||||
|
||||
const result = await repository.getOrderedStopsByRouteId("route1");
|
||||
const result = await repository.getOrderedStopsByRouteId(newOrderedStop.routeId);
|
||||
expect(result).toEqual([newOrderedStop]);
|
||||
});
|
||||
|
||||
test("updates an existing ordered stop if it exists", async () => {
|
||||
const existingOrderedStop = { routeId: "route1", stopId: "stop1", position: 1 };
|
||||
const updatedOrderedStop = { routeId: "route1", stopId: "stop1", position: 2 };
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
const existingOrderedStop = mockOrderedStops[0];
|
||||
const updatedOrderedStop = structuredClone(existingOrderedStop);
|
||||
updatedOrderedStop.position = 5;
|
||||
|
||||
await repository.addOrUpdateOrderedStop(existingOrderedStop);
|
||||
await repository.addOrUpdateOrderedStop(updatedOrderedStop);
|
||||
|
||||
const result = await repository.getOrderedStopsByRouteId("route1");
|
||||
const result = await repository.getOrderedStopsByRouteId(existingOrderedStop.routeId);
|
||||
expect(result).toEqual([updatedOrderedStop]);
|
||||
});
|
||||
});
|
||||
@@ -489,11 +488,10 @@ describe("UnoptimizedInMemoryRepository", () => {
|
||||
|
||||
describe("clearOrderedStopData", () => {
|
||||
test("clears all ordered stops from the repository", async () => {
|
||||
const orderedStop1 = { routeId: "route1", stopId: "stop1", position: 1 };
|
||||
const orderedStop2 = { routeId: "route2", stopId: "stop2", position: 2 };
|
||||
|
||||
await repository.addOrUpdateOrderedStop(orderedStop1);
|
||||
await repository.addOrUpdateOrderedStop(orderedStop2);
|
||||
const mockOrderedStops = await generateMockOrderedStops();
|
||||
for (const system of mockOrderedStops) {
|
||||
await repository.addOrUpdateOrderedStop(system);
|
||||
}
|
||||
|
||||
await repository.clearOrderedStopData();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user