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