diff --git a/src/loaders/shuttle/__tests__/ApiBasedShuttleRepositoryLoaderTests.test.ts b/src/loaders/shuttle/__tests__/ApiBasedShuttleRepositoryLoaderTests.test.ts index fa636e4..7aeb9ff 100644 --- a/src/loaders/shuttle/__tests__/ApiBasedShuttleRepositoryLoaderTests.test.ts +++ b/src/loaders/shuttle/__tests__/ApiBasedShuttleRepositoryLoaderTests.test.ts @@ -5,7 +5,7 @@ import { fetchRouteDataSuccessfulResponse } from "../../../../testHelpers/jsonSn import { fetchStopAndPolylineDataSuccessfulResponse } from "../../../../testHelpers/jsonSnapshots/fetchStopAndPolylineData/fetchStopAndPolylineDataSuccessfulResponse"; -import { generateMockRoutes, generateMockShuttles, generateMockStops } from "../../../../testHelpers/mockDataGenerators"; +import { generateMockRoutes, generateMockStops } from "../../../../testHelpers/mockDataGenerators"; import { fetchShuttleDataSuccessfulResponse } from "../../../../testHelpers/jsonSnapshots/fetchShuttleData/fetchShuttleDataSuccessfulResponse"; @@ -36,7 +36,7 @@ describe("ApiBasedShuttleRepositoryLoader", () => { const spies = { updateRouteDataForSystem: jest.spyOn(loader, "updateRouteDataForSystem"), updateStopAndPolylineDataForRoutesInSystem: jest.spyOn(loader, "updateStopAndPolylineDataForRoutesInSystem"), - updateShuttleDataForSystem: jest.spyOn(loader, "updateShuttleDataForSystem"), + updateShuttleDataForSystem: jest.spyOn(loader, "updateShuttleDataForSystemBasedOnProximityToRoutes"), updateEtaDataForExistingStopsForSystem: jest.spyOn(loader, "updateEtaDataForExistingStopsForSystem"), }; @@ -124,18 +124,42 @@ describe("ApiBasedShuttleRepositoryLoader", () => { }) }); - describe("updateShuttleDataForSystem", () => { - it("updates shuttle data in repository if response received", async () => { - const shuttlesToPrune = generateMockShuttles(); - await Promise.all(shuttlesToPrune.map(async (shuttle) => { - shuttle.systemId = systemId; - await loader.repository.addOrUpdateShuttle(shuttle); - })) + describe("updateShuttleDataForSystemBasedOnProximityToRoutes", () => { + it("updates shuttle data in repository from API if shuttles close enough to route", async () => { + const distance = 1; + loader = new ApiBasedShuttleRepositoryLoader( + "263", + "1", + new UnoptimizedInMemoryShuttleRepository(), + distance, + ); - updateGlobalFetchMockJson(fetchShuttleDataSuccessfulResponse); - const busesInResponse = Object.values(fetchShuttleDataSuccessfulResponse.buses); + const routes = generateMockRoutes(); + routes[0].polylineCoordinates = [ + { latitude: 33.78792, longitude: -117.86187 }, + { latitude: 33.78792, longitude: -117.86200 }, + { latitude: 33.78792, longitude: -117.86245 } + ]; - await loader.updateShuttleDataForSystem(); + await Promise.all(routes.map(async (route) => { + await loader.repository.addOrUpdateRoute(route); + })); + + const modifiedSuccessfulResponse = { + ...fetchShuttleDataSuccessfulResponse, + }; + + Object.keys(modifiedSuccessfulResponse.buses).forEach((busId) => { + const bus = (modifiedSuccessfulResponse.buses as any)[busId][0]; + bus.latitude = "33.78792"; + bus.longitude = "-117.86187"; + bus.routeId = routes[0].id; + }); + + updateGlobalFetchMockJson(modifiedSuccessfulResponse); + const busesInResponse = Object.values(modifiedSuccessfulResponse.buses); + + await loader.updateShuttleDataForSystemBasedOnProximityToRoutes(); const shuttles = await loader.repository.getShuttles(); @@ -146,7 +170,7 @@ describe("ApiBasedShuttleRepositoryLoader", () => { updateGlobalFetchMockJsonToThrowSyntaxError(); await assertAsyncCallbackThrowsApiResponseError(async () => { - await loader.updateShuttleDataForSystem(); + await loader.updateShuttleDataForSystemBasedOnProximityToRoutes(); }); }); });