Implement getShuttleLastStopArrival and updateShuttleLastStopArrival

This commit is contained in:
2025-11-10 15:36:33 -08:00
parent 2a80a049bd
commit cba91dae55
2 changed files with 62 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
import { beforeEach, describe, it } from "@jest/globals";
import { beforeEach, describe, it, expect, afterEach } from "@jest/globals";
import { RedisShuttleRepository } from "../RedisShuttleRepository";
import { afterEach } from "node:test";
import { generateMockShuttles } from "../../../../testHelpers/mockDataGenerators";
describe("RedisShuttleRepository", () => {
let repository: RedisShuttleRepository;
@@ -27,11 +27,52 @@ describe("RedisShuttleRepository", () => {
describe("getShuttleLastStopArrival", () => {
it("gets the shuttle's last stop if existing in the data", async () => {
// Use updateShuttleLastStopArrival to populate data
const mockShuttles = generateMockShuttles();
const shuttle = mockShuttles[0];
const stopArrival = {
stopId: "st1",
timestamp: new Date("2024-01-15T10:30:00Z"),
};
await repository.updateShuttleLastStopArrival(shuttle, stopArrival);
const result = await repository.getShuttleLastStopArrival(shuttle);
expect(result).toBeDefined();
expect(result?.stopId).toBe(stopArrival.stopId);
expect(result?.timestamp.getTime()).toBe(stopArrival.timestamp.getTime());
});
it("returns undefined if the data has never been initialized", async () => {
const mockShuttles = generateMockShuttles();
const shuttle = mockShuttles[0];
const result = await repository.getShuttleLastStopArrival(shuttle);
expect(result).toBeUndefined();
});
it("returns the most recent stop arrival when updated multiple times", async () => {
const mockShuttles = generateMockShuttles();
const shuttle = mockShuttles[0];
const firstArrival = {
stopId: "st1",
timestamp: new Date("2024-01-15T10:30:00Z"),
};
const secondArrival = {
stopId: "st2",
timestamp: new Date("2024-01-15T10:35:00Z"),
};
await repository.updateShuttleLastStopArrival(shuttle, firstArrival);
await repository.updateShuttleLastStopArrival(shuttle, secondArrival);
const result = await repository.getShuttleLastStopArrival(shuttle);
expect(result).toBeDefined();
expect(result?.stopId).toBe(secondArrival.stopId);
expect(result?.timestamp.getTime()).toBe(secondArrival.timestamp.getTime());
});
});
});