diff --git a/src/repositories/GetterRepository.ts b/src/repositories/GetterRepository.ts index c9f473c..8ab048d 100644 --- a/src/repositories/GetterRepository.ts +++ b/src/repositories/GetterRepository.ts @@ -17,7 +17,23 @@ export interface GetterRepository { getEtasForShuttleId(shuttleId: string): Promise; getEtasForStopId(stopId: string): Promise; getEtaForShuttleAndStopId(shuttleId: string, stopId: string): Promise; - subscribeToEtaChanges(listener: (eta: IEta) => void): Promise; + + /** + * Subscribe to all updates in ETA data. + * The subscriber persists even if the ETA data does not + * exist within the repository, and may fire again + * if ETA data is restored. + * @param listener + */ + subscribeToEtaChanges( + listener: (eta: IEta) => void, + ): Promise; + + /** + * Unsubscribe from all ETA updates for the given callback. + * Callback must be passed by reference. + * @param listener + */ unsubscribeFromEtaChanges(listener: (eta: IEta) => void): Promise; getOrderedStopByRouteAndStopId(routeId: string, stopId: string): Promise; diff --git a/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts b/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts index f130ba5..5f1beca 100644 --- a/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts +++ b/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts @@ -225,6 +225,14 @@ describe("UnoptimizedInMemoryRepository", () => { }); }); + describe("subscribeToEtaChanges", () => { + test("notifies listener if the eta has changed") + }); + + describe("unsubscribeFromEtaChanges", () => { + + }); + describe("getOrderedStopByRouteAndStopId", () => { test("gets an ordered stop by route ID and stop ID", async () => { const mockOrderedStops = generateMockOrderedStops(); @@ -711,4 +719,4 @@ describe("UnoptimizedInMemoryRepository", () => { expect(result).toEqual([]); }); }); -}); \ No newline at end of file +});