diff --git a/src/loaders/ApiBasedRepositoryLoader.ts b/src/loaders/ApiBasedRepositoryLoader.ts index f9f740d..fce25df 100644 --- a/src/loaders/ApiBasedRepositoryLoader.ts +++ b/src/loaders/ApiBasedRepositoryLoader.ts @@ -98,9 +98,7 @@ export class ApiBasedRepositoryLoader { } } - public async fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystems() { - // Fetch from the API - // Pass JSON output into two different methods to update repository + public async fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystemsInRepository() { const systems = await this.repository.getSystems(); await Promise.all(systems.map(async (system: ISystem) => { await this.fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId(system.id); @@ -108,6 +106,8 @@ export class ApiBasedRepositoryLoader { } public async fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId(systemId: string) { + // Fetch from the API + // Pass JSON output into two different methods to update repository const params = { getStops: "2", }; diff --git a/src/loaders/TimedApiBasedRepositoryLoader.ts b/src/loaders/TimedApiBasedRepositoryLoader.ts index be806d7..7588316 100644 --- a/src/loaders/TimedApiBasedRepositoryLoader.ts +++ b/src/loaders/TimedApiBasedRepositoryLoader.ts @@ -52,7 +52,7 @@ export class TimedApiBasedRepositoryLoader extends ApiBasedRepositoryLoader { await this.repository.clearRouteData(); await this.fetchAndUpdateRouteDataForExistingSystemsInRepository(); await this.repository.clearStopData(); - await this.fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystems(); + await this.fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystemsInRepository(); await this.repository.clearShuttleData(); await this.fetchAndUpdateShuttleDataForExistingSystems(); await this.repository.clearEtaData(); diff --git a/test/loaders/ApiBasedRepositoryLoaderTests.test.ts b/test/loaders/ApiBasedRepositoryLoaderTests.test.ts index 6a3d615..07a53aa 100644 --- a/test/loaders/ApiBasedRepositoryLoaderTests.test.ts +++ b/test/loaders/ApiBasedRepositoryLoaderTests.test.ts @@ -8,6 +8,7 @@ import { ISystem } from "../../src/entities/entities"; import { fetchStopAndPolylineDataSuccessfulResponse } from "../jsonSnapshots/fetchStopAndPolylineData/fetchStopAndPolylineDataSuccessfulResponse"; +import { generateMockSystems } from "../generators"; /** * Function to update behavior of the global `fetch` function. @@ -97,16 +98,7 @@ describe("ApiBasedRepositoryLoader", () => { test("calls fetchAndUpdateRouteDataForSystemId for all systems in repository", async () => { const spy = jest.spyOn(loader, "fetchAndUpdateRouteDataForSystemId"); - const systems: ISystem[] = [ - { - name: "Chapman University", - id: "1", - }, - { - name: "City of Monterey Park", - id: "2", - } - ]; + const systems = generateMockSystems(); await Promise.all(systems.map(async (system) => { await loader.repository.addOrUpdateSystem(system); @@ -114,7 +106,7 @@ describe("ApiBasedRepositoryLoader", () => { await loader.fetchAndUpdateRouteDataForExistingSystemsInRepository(); - expect(spy.mock.calls.length).toBe(2); + expect(spy.mock.calls.length).toBe(systems.length); }); }); @@ -141,6 +133,22 @@ describe("ApiBasedRepositoryLoader", () => { }); }); + describe("fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystemsInRepository", () => { + it("calls fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId for every system", async () => { + const spy = jest.spyOn(loader, "fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId"); + + const systems = generateMockSystems(); + + await Promise.all(systems.map(async (system) => { + await loader.repository.addOrUpdateSystem(system); + })); + + await loader.fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystemsInRepository(); + + expect(spy.mock.calls.length).toBe(systems.length); + }); + }) + describe("fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId", () => { it("updates stop and polyline data if there are systems and response received", async () => { updateGlobalFetchMockJson(fetchStopAndPolylineDataSuccessfulResponse);