mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
Remove ETA-related tests from ShuttleRepositorySharedTests
This commit is contained in:
@@ -3,9 +3,7 @@ import { createClient, RedisClientType } from "redis";
|
||||
import { UnoptimizedInMemoryShuttleRepository } from "../UnoptimizedInMemoryShuttleRepository";
|
||||
import { ShuttleGetterSetterRepository } from "../ShuttleGetterSetterRepository";
|
||||
import { RedisShuttleRepository } from "../RedisShuttleRepository";
|
||||
import { ShuttleRepositoryEvent } from "../ShuttleGetterRepository";
|
||||
import {
|
||||
generateMockEtas,
|
||||
generateMockOrderedStops,
|
||||
generateMockRoutes,
|
||||
generateMockShuttles,
|
||||
@@ -181,55 +179,6 @@ describe.each(repositoryImplementations)('$name', (holder) => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("ETA event emitters", () => {
|
||||
test("emits ETA_UPDATED event when ETAs are added from external source", async () => {
|
||||
const mockListener = jest.fn();
|
||||
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
|
||||
|
||||
const mockEtas = generateMockEtas();
|
||||
for (const eta of mockEtas) {
|
||||
await repository.addOrUpdateEtaFromExternalSource(eta);
|
||||
}
|
||||
|
||||
expect(mockListener).toHaveBeenCalledTimes(mockEtas.length);
|
||||
expect(mockListener).toHaveBeenCalledWith(mockEtas[0]);
|
||||
expect(mockListener).toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]);
|
||||
});
|
||||
|
||||
test("does not notify listener after it has been removed", async () => {
|
||||
const mockListener = jest.fn();
|
||||
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
|
||||
|
||||
const mockEtas = generateMockEtas();
|
||||
|
||||
repository.off(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
|
||||
await repository.addOrUpdateEtaFromExternalSource(mockEtas[0]);
|
||||
expect(mockListener).toHaveBeenCalledTimes(0);
|
||||
});
|
||||
|
||||
test("stops notifying specific listener after removal but continues for others", async () => {
|
||||
const mockListener1 = jest.fn();
|
||||
const mockListener2 = jest.fn();
|
||||
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener1);
|
||||
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener2);
|
||||
|
||||
const mockEtas = generateMockEtas();
|
||||
await repository.addOrUpdateEtaFromExternalSource(mockEtas[0]);
|
||||
|
||||
repository.off(ShuttleRepositoryEvent.ETA_UPDATED, mockListener1);
|
||||
|
||||
await repository.addOrUpdateEtaFromExternalSource(mockEtas[mockEtas.length - 1]);
|
||||
|
||||
expect(mockListener1).toHaveBeenCalledTimes(1);
|
||||
expect(mockListener1).toHaveBeenCalledWith(mockEtas[0]);
|
||||
expect(mockListener1).not.toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]);
|
||||
|
||||
expect(mockListener2).toHaveBeenCalledTimes(2);
|
||||
expect(mockListener2).toHaveBeenCalledWith(mockEtas[0]);
|
||||
expect(mockListener2).toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("getOrderedStopByRouteAndStopId", () => {
|
||||
test("gets an ordered stop by route ID and stop ID", async () => {
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
@@ -515,46 +464,6 @@ describe.each(repositoryImplementations)('$name', (holder) => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("removeEtaIfExists", () => {
|
||||
test("emits an eta removed event when an eta is removed", async () => {
|
||||
const mockRoutes = generateMockRoutes();
|
||||
const mockStops = generateMockStops();
|
||||
const mockShuttles = generateMockShuttles();
|
||||
const mockOrderedStops = generateMockOrderedStops();
|
||||
|
||||
const listener = jest.fn();
|
||||
repository.on(ShuttleRepositoryEvent.ETA_REMOVED, listener);
|
||||
|
||||
// Setup route, stops, and ordered stops
|
||||
await repository.addOrUpdateRoute(mockRoutes[0]);
|
||||
for (const stop of mockStops) {
|
||||
await repository.addOrUpdateStop(stop);
|
||||
}
|
||||
for (const orderedStop of mockOrderedStops.filter(os => os.routeId === mockRoutes[0].id)) {
|
||||
await repository.addOrUpdateOrderedStop(orderedStop);
|
||||
}
|
||||
|
||||
// Create an ETA by moving shuttle between stops
|
||||
const shuttle = mockShuttles[0];
|
||||
shuttle.routeId = mockRoutes[0].id;
|
||||
shuttle.coordinates = mockStops[0].coordinates;
|
||||
await repository.addOrUpdateShuttle(shuttle);
|
||||
|
||||
shuttle.coordinates = mockStops[1].coordinates;
|
||||
await repository.addOrUpdateShuttle(shuttle);
|
||||
|
||||
// Get any ETAs that were created for this shuttle
|
||||
const existingEtas = await repository.getEtasForShuttleId(shuttle.id);
|
||||
|
||||
if (existingEtas.length > 0) {
|
||||
const etaToRemove = existingEtas[0];
|
||||
await repository.removeEtaIfExists(etaToRemove.shuttleId, etaToRemove.stopId);
|
||||
|
||||
expect(listener).toHaveBeenCalledWith(etaToRemove);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe("clearShuttleData", () => {
|
||||
test("clears all shuttles from the repository", async () => {
|
||||
const mockShuttles = generateMockShuttles();
|
||||
|
||||
Reference in New Issue
Block a user