From 50350d8c494db09ae352bdd7ccf13481ba490879 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Fri, 11 Apr 2025 17:08:20 -0700 Subject: [PATCH] add test for ApiBasedShuttleRepositoryLoader.fetchAndUpdateAll --- ...iBasedShuttleRepositoryLoaderTests.test.ts | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/test/loaders/ApiBasedShuttleRepositoryLoaderTests.test.ts b/test/loaders/ApiBasedShuttleRepositoryLoaderTests.test.ts index a9b20f2..ee93aa3 100644 --- a/test/loaders/ApiBasedShuttleRepositoryLoaderTests.test.ts +++ b/test/loaders/ApiBasedShuttleRepositoryLoaderTests.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, it, jest } from "@jest/globals"; +import { afterEach, beforeEach, describe, expect, it, jest } from "@jest/globals"; import { ApiBasedShuttleRepositoryLoader } from "../../src/loaders/ApiBasedShuttleRepositoryLoader"; import { UnoptimizedInMemoryShuttleRepository } from "../../src/repositories/UnoptimizedInMemoryShuttleRepository"; import { fetchRouteDataSuccessfulResponse } from "../jsonSnapshots/fetchRouteData/fetchRouteDataSuccessfulResponse"; @@ -17,7 +17,7 @@ import { } from "../testHelpers/fetchMockHelpers"; import { assertAsyncCallbackThrowsApiResponseError } from "../testHelpers/assertAsyncCallbackThrowsApiResponseError"; -describe("ApiBasedRepositoryLoader", () => { +describe("ApiBasedShuttleRepositoryLoader", () => { let loader: ApiBasedShuttleRepositoryLoader; beforeEach(() => { @@ -25,7 +25,33 @@ describe("ApiBasedRepositoryLoader", () => { resetGlobalFetchMockJson(); }); + afterEach(() => { + jest.clearAllMocks(); + }); + const systemId = "1"; + + describe("fetchAndUpdateAll", () => { + it("calls all the correct methods", async () => { + const spies = { + fetchAndUpdateRouteDataForSystem: jest.spyOn(loader, "fetchAndUpdateRouteDataForSystem"), + fetchAndUpdateStopAndPolylineDataForRoutesInSystem: jest.spyOn(loader, "fetchAndUpdateStopAndPolylineDataForRoutesInSystem"), + fetchAndUpdateShuttleDataForSystem: jest.spyOn(loader, "fetchAndUpdateShuttleDataForSystem"), + fetchAndUpdateEtaDataForExistingStopsForSystem: jest.spyOn(loader, "fetchAndUpdateEtaDataForExistingStopsForSystem"), + }; + + Object.values(spies).forEach((spy: any) => { + spy.mockResolvedValue(undefined); + }); + + await loader.fetchAndUpdateAll(); + + Object.values(spies).forEach((spy: any) => { + expect(spy).toHaveBeenCalled(); + }); + }); + }); + describe("fetchAndUpdateRouteDataForSystem", () => { it("updates route data in repository if response received", async () => { // Arrange