Rename getArrivedStopIfExists to getArrivedStopIfNextStop, and add more documentation

This commit is contained in:
2025-11-21 11:42:42 -08:00
parent 715bef163c
commit ee10daf957
4 changed files with 33 additions and 31 deletions

View File

@@ -1,13 +1,13 @@
import { ShuttleGetterSetterRepository } from "./ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "./ShuttleGetterSetterRepository";
import { IEta, IOrderedStop, IRoute, IShuttle, IStop, shuttleHasArrivedAtStop } from "../../entities/ShuttleRepositoryEntities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop, shuttleHasArrivedAtStop } from "../../entities/ShuttleRepositoryEntities";
import { import {
ShuttleRepositoryEvent, ShuttleRepositoryEvent,
ShuttleRepositoryEventListener, ShuttleRepositoryEventListener,
ShuttleRepositoryEventName, ShuttleRepositoryEventName,
ShuttleRepositoryEventPayloads, ShuttleRepositoryEventPayloads,
ShuttleStopArrival, ShuttleStopArrival,
ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDataIdentifier,
ShuttleTravelTimeDateFilterArguments ShuttleTravelTimeDateFilterArguments
} from "./ShuttleGetterRepository"; } from "./ShuttleGetterRepository";
import { BaseRedisRepository } from "../BaseRedisRepository"; import { BaseRedisRepository } from "../BaseRedisRepository";
import { RedisClientType } from "redis"; import { RedisClientType } from "redis";
@@ -375,9 +375,9 @@ export class RedisShuttleRepository extends BaseRedisRepository implements Shutt
if (isAtStop) { if (isAtStop) {
// Allow retrieval of the shuttle's current stop // Allow retrieval of the shuttle's current stop
// Will still return undefined when the shuttle leaves the stop // Will still return undefined when the shuttle leaves the stop
arrivedStop = await this.getArrivedStopIfExists(shuttle, true); arrivedStop = await this.getArrivedStopIfNextStop(shuttle, true);
} else { } else {
arrivedStop = await this.getArrivedStopIfExists(shuttle, false); arrivedStop = await this.getArrivedStopIfNextStop(shuttle, false);
} }
// Will not fire *any* events if the same stop // Will not fire *any* events if the same stop
@@ -452,7 +452,7 @@ export class RedisShuttleRepository extends BaseRedisRepository implements Shutt
} }
} }
public async getArrivedStopIfExists( public async getArrivedStopIfNextStop(
shuttle: IShuttle, shuttle: IShuttle,
canReturnShuttleCurrentStop: boolean = false, canReturnShuttleCurrentStop: boolean = false,
): Promise<IStop | undefined> { ): Promise<IStop | undefined> {

View File

@@ -104,7 +104,9 @@ export interface ShuttleGetterRepository extends EventEmitter {
checkIfShuttleIsAtStop(shuttleId: string): Promise<boolean>; checkIfShuttleIsAtStop(shuttleId: string): Promise<boolean>;
/** /**
* Get the stop that the shuttle is currently at, if it exists. * Get the stop that the shuttle is currently at, if it's the shuttle's
* next stop based on the "last stop" the shuttle was at. If there was no
* "last stop" for the shuttle, it may return any stop on the shuttle's route.
* *
* @param shuttle * @param shuttle
* @param canReturnShuttleCurrentStop If set to true, and the shuttle's "last stop" * @param canReturnShuttleCurrentStop If set to true, and the shuttle's "last stop"
@@ -113,5 +115,5 @@ export interface ShuttleGetterRepository extends EventEmitter {
* This flag has no effect if the shuttle has not had a "last stop". * This flag has no effect if the shuttle has not had a "last stop".
* @returns * @returns
*/ */
getArrivedStopIfExists(shuttle: IShuttle, canReturnShuttleCurrentStop: boolean): Promise<IStop | undefined>; getArrivedStopIfNextStop(shuttle: IShuttle, canReturnShuttleCurrentStop: boolean): Promise<IStop | undefined>;
} }

View File

@@ -3,13 +3,13 @@ import { ShuttleGetterSetterRepository } from "./ShuttleGetterSetterRepository";
import { IOrderedStop, IRoute, IShuttle, IStop, shuttleHasArrivedAtStop } from "../../entities/ShuttleRepositoryEntities"; import { IOrderedStop, IRoute, IShuttle, IStop, shuttleHasArrivedAtStop } from "../../entities/ShuttleRepositoryEntities";
import { IEntityWithId } from "../../entities/SharedEntities"; import { IEntityWithId } from "../../entities/SharedEntities";
import { import {
ShuttleRepositoryEvent, ShuttleRepositoryEvent,
ShuttleRepositoryEventListener, ShuttleRepositoryEventListener,
ShuttleRepositoryEventName, ShuttleRepositoryEventName,
ShuttleRepositoryEventPayloads, ShuttleRepositoryEventPayloads,
ShuttleStopArrival, ShuttleStopArrival,
ShuttleTravelTimeDataIdentifier, ShuttleTravelTimeDataIdentifier,
ShuttleTravelTimeDateFilterArguments, ShuttleTravelTimeDateFilterArguments,
} from "./ShuttleGetterRepository"; } from "./ShuttleGetterRepository";
/** /**
@@ -190,9 +190,9 @@ export class UnoptimizedInMemoryShuttleRepository
if (isAtStop) { if (isAtStop) {
// Allow retrieval of the shuttle's current stop // Allow retrieval of the shuttle's current stop
// Will still return undefined when the shuttle leaves the stop // Will still return undefined when the shuttle leaves the stop
arrivedStop = await this.getArrivedStopIfExists(shuttle, true); arrivedStop = await this.getArrivedStopIfNextStop(shuttle, true);
} else { } else {
arrivedStop = await this.getArrivedStopIfExists(shuttle, false); arrivedStop = await this.getArrivedStopIfNextStop(shuttle, false);
} }
@@ -268,7 +268,7 @@ export class UnoptimizedInMemoryShuttleRepository
return sum / filteredPoints.length; return sum / filteredPoints.length;
} }
public async getArrivedStopIfExists( public async getArrivedStopIfNextStop(
shuttle: IShuttle, shuttle: IShuttle,
canReturnShuttleCurrentStop: boolean = false, canReturnShuttleCurrentStop: boolean = false,
): Promise<IStop | undefined> { ): Promise<IStop | undefined> {

View File

@@ -4,10 +4,10 @@ import { UnoptimizedInMemoryShuttleRepository } from "../UnoptimizedInMemoryShut
import { ShuttleGetterSetterRepository } from "../ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../ShuttleGetterSetterRepository";
import { RedisShuttleRepository } from "../RedisShuttleRepository"; import { RedisShuttleRepository } from "../RedisShuttleRepository";
import { import {
generateMockOrderedStops, generateMockOrderedStops,
generateMockRoutes, generateMockRoutes,
generateMockShuttles, generateMockShuttles,
generateMockStops, generateMockStops,
} from "../../../../testHelpers/mockDataGenerators"; } from "../../../../testHelpers/mockDataGenerators";
import { RepositoryHolder } from "../../../../testHelpers/RepositoryHolder"; import { RepositoryHolder } from "../../../../testHelpers/RepositoryHolder";
import { setupRouteAndOrderedStopsForShuttleRepository } from "../../../../testHelpers/setupRouteAndOrderedStopsForShuttleRepository"; import { setupRouteAndOrderedStopsForShuttleRepository } from "../../../../testHelpers/setupRouteAndOrderedStopsForShuttleRepository";
@@ -577,7 +577,7 @@ describe.each(repositoryImplementations)('$name', (holder) => {
test("gets any stop that the shuttle is currently at, if the shuttle has not had a last stop", async () => { test("gets any stop that the shuttle is currently at, if the shuttle has not had a last stop", async () => {
const { sampleShuttleNotInRepository: shuttle } = await setupRouteAndOrderedStops(); const { sampleShuttleNotInRepository: shuttle } = await setupRouteAndOrderedStops();
const result = await repository.getArrivedStopIfExists(shuttle, false); const result = await repository.getArrivedStopIfNextStop(shuttle, false);
expect(result).toBeDefined(); expect(result).toBeDefined();
expect(result?.id).toBe("st2"); expect(result?.id).toBe("st2");
@@ -588,7 +588,7 @@ describe.each(repositoryImplementations)('$name', (holder) => {
const { sampleShuttleNotInRepository } = await setupRouteAndOrderedStops(); const { sampleShuttleNotInRepository } = await setupRouteAndOrderedStops();
const shuttle = { ...sampleShuttleNotInRepository, coordinates: { latitude: 12.5, longitude: 22.5 } }; // Not at any stop const shuttle = { ...sampleShuttleNotInRepository, coordinates: { latitude: 12.5, longitude: 22.5 } }; // Not at any stop
const result = await repository.getArrivedStopIfExists(shuttle, false); const result = await repository.getArrivedStopIfNextStop(shuttle, false);
expect(result).toBeUndefined(); expect(result).toBeUndefined();
}); });
@@ -599,11 +599,11 @@ describe.each(repositoryImplementations)('$name', (holder) => {
shuttle.coordinates = stop1.coordinates; shuttle.coordinates = stop1.coordinates;
await repository.addOrUpdateShuttle(shuttle); await repository.addOrUpdateShuttle(shuttle);
let result = await repository.getArrivedStopIfExists(shuttle, false); let result = await repository.getArrivedStopIfNextStop(shuttle, false);
expect(result).toBeUndefined(); expect(result).toBeUndefined();
shuttle.coordinates = stop2.coordinates; shuttle.coordinates = stop2.coordinates;
result = await repository.getArrivedStopIfExists(shuttle, false); result = await repository.getArrivedStopIfNextStop(shuttle, false);
expect(result).not.toBeUndefined(); expect(result).not.toBeUndefined();
}); });
@@ -613,7 +613,7 @@ describe.each(repositoryImplementations)('$name', (holder) => {
shuttle.coordinates = stop1.coordinates; shuttle.coordinates = stop1.coordinates;
await repository.addOrUpdateShuttle(shuttle); await repository.addOrUpdateShuttle(shuttle);
const result = await repository.getArrivedStopIfExists(shuttle, true); const result = await repository.getArrivedStopIfNextStop(shuttle, true);
expect(result?.id === stop1.id) expect(result?.id === stop1.id)
}); });