diff --git a/src/repositories/ApiBasedRepository.ts b/src/repositories/ApiBasedRepository.ts index 18a562e..dda591a 100644 --- a/src/repositories/ApiBasedRepository.ts +++ b/src/repositories/ApiBasedRepository.ts @@ -8,11 +8,11 @@ export interface ApiBasedRepositoryCache { etasForStopId?: { [stopId: string]: IEta[], }, - stopsBySystemId?: { - [systemId: string]: IStop[], + stopsByStopId?: { + [stopId: string]: IStop, }, - shuttlesByShuttleId?: { - [shuttleId: string]: IShuttle[], + shuttleByShuttleId?: { + [shuttleId: string]: IShuttle, }, // To speed things up, implement caches for other data later } @@ -34,6 +34,7 @@ const defaultTtls: ApiBasedRepositoryMillisecondTTLs = { export class ApiBasedRepository implements GetterRepository { constructor( + private systemId: string, private initialCache: ApiBasedRepositoryCache | undefined = emptyCache, private ttls: ApiBasedRepositoryMillisecondTTLs = defaultTtls, ) { diff --git a/test/repositories/ApiBasedRepositoryTests.test.ts b/test/repositories/ApiBasedRepositoryTests.test.ts index 26e749e..52947a7 100644 --- a/test/repositories/ApiBasedRepositoryTests.test.ts +++ b/test/repositories/ApiBasedRepositoryTests.test.ts @@ -149,7 +149,7 @@ describe("getEtaForShuttleAndStopId", () => { test("getEtaForShuttleAndStopId returns correct ETA data", async () => { updateGlobalFetchMockJson(genericEtaDataByStopId); - const repository = new ApiBasedRepository(); + const repository = new ApiBasedRepository("1"); const result = await repository.getEtaForShuttleAndStopId("5577", "177666"); expect(result?.secondsRemaining).toEqual(587); @@ -157,7 +157,7 @@ describe("getEtaForShuttleAndStopId", () => { }); test("getEtaForShuttleAndStopId returns null if API call is invalid and cache is empty", async () => { - const repository = new ApiBasedRepository(); + const repository = new ApiBasedRepository("1"); const result = await repository.getEtaForShuttleAndStopId("5577", "177666"); expect(result).toEqual(null); @@ -190,7 +190,7 @@ describe("getEtasForShuttleId", () => { etasForStopId: 100000, }; - const repository = new ApiBasedRepository(initialCache, ttls); + const repository = new ApiBasedRepository("1", initialCache, ttls); repository.updateEtasForSystemIfTTL = jest.fn(async () => { }); const result = await repository.getEtasForShuttleId("5577"); @@ -199,7 +199,7 @@ describe("getEtasForShuttleId", () => { }); test("getEtasForShuttleId returns empty array if no data available", async () => { - const repository = new ApiBasedRepository(); + const repository = new ApiBasedRepository("1"); repository.updateEtasForSystemIfTTL = jest.fn(async () => { }); const result = await repository.getEtasForShuttleId("5577"); @@ -234,7 +234,7 @@ describe("getEtasForStopId", () => { etasForStopId: 100000, }; - const repository = new ApiBasedRepository(initialCache, ttls); + const repository = new ApiBasedRepository("1", initialCache, ttls); repository.updateEtasForSystemIfTTL = jest.fn(async () => { }); const result = await repository.getEtasForStopId("177666"); @@ -243,7 +243,7 @@ describe("getEtasForStopId", () => { }); test("getEtasForStopId returns empty array if no data available", async () => { - const repository = new ApiBasedRepository(); + const repository = new ApiBasedRepository("1"); repository.updateEtasForSystemIfTTL = jest.fn(async () => { }); const result = await repository.getEtasForShuttleId("5577"); @@ -275,20 +275,18 @@ describe("updateEtasForSystemIfTTL", () => { expectedEta, ], }, - stopsBySystemId: { - "1": [ - { - systemId: "1", - millisecondsSinceEpoch: Date.now() - 1000, - name: "Chapman Court", - id: "177666", - coordinates: { - latitude: 33.796796, - longitude: -117.889293 - }, - } - ], - }, + stopsByStopId: { + "1": { + systemId: "1", + millisecondsSinceEpoch: Date.now() - 1000, + name: "Chapman Court", + id: "177666", + coordinates: { + latitude: 33.796796, + longitude: -117.889293 + }, + } + } }; const ttls: ApiBasedRepositoryMillisecondTTLs = { @@ -296,7 +294,7 @@ describe("updateEtasForSystemIfTTL", () => { etasForStopId: 100000, }; - const repository = new ApiBasedRepository(initialCache, ttls); + const repository = new ApiBasedRepository("1", initialCache, ttls); await repository.updateEtasForSystemIfTTL("1"); const updatedResult = await repository.getEtaForShuttleAndStopId( @@ -309,7 +307,7 @@ describe("updateEtasForSystemIfTTL", () => { test("updateEtasForSystemIfTTL updates all ETA data if data is TTL", async () => { updateGlobalFetchMockJson(genericEtaDataByStopId); - const repository = new ApiBasedRepository(); + const repository = new ApiBasedRepository("1"); repository.getStopsBySystemId = jest.fn(async () => { return [ {