mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 16:00:32 +00:00
add pruning checks for other data models
This commit is contained in:
@@ -7,7 +7,14 @@ import { fetchRouteDataSuccessfulResponse } from "../jsonSnapshots/fetchRouteDat
|
|||||||
import {
|
import {
|
||||||
fetchStopAndPolylineDataSuccessfulResponse
|
fetchStopAndPolylineDataSuccessfulResponse
|
||||||
} from "../jsonSnapshots/fetchStopAndPolylineData/fetchStopAndPolylineDataSuccessfulResponse";
|
} from "../jsonSnapshots/fetchStopAndPolylineData/fetchStopAndPolylineDataSuccessfulResponse";
|
||||||
import { generateMockStops, generateMockSystems } from "../generators";
|
import {
|
||||||
|
generateMockEtas,
|
||||||
|
generateMockOrderedStops,
|
||||||
|
generateMockRoutes,
|
||||||
|
generateMockShuttles,
|
||||||
|
generateMockStops,
|
||||||
|
generateMockSystems
|
||||||
|
} from "../generators";
|
||||||
import { IStop } from "../../src/entities/entities";
|
import { IStop } from "../../src/entities/entities";
|
||||||
import {
|
import {
|
||||||
fetchShuttleDataSuccessfulResponse
|
fetchShuttleDataSuccessfulResponse
|
||||||
@@ -89,12 +96,23 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("fetchAndUpdateRouteDataForSystemId", () => {
|
describe("fetchAndUpdateRouteDataForSystemId", () => {
|
||||||
|
const systemId = "263";
|
||||||
it("updates route data in repository if response received", async () => {
|
it("updates route data in repository if response received", async () => {
|
||||||
|
// Arrange
|
||||||
|
// Test pruning
|
||||||
|
const routesToPrune = generateMockRoutes();
|
||||||
|
await Promise.all(routesToPrune.map(async (route) => {
|
||||||
|
route.systemId = systemId;
|
||||||
|
await loader.repository.addOrUpdateRoute(route);
|
||||||
|
}));
|
||||||
|
|
||||||
updateGlobalFetchMockJson(fetchRouteDataSuccessfulResponse);
|
updateGlobalFetchMockJson(fetchRouteDataSuccessfulResponse);
|
||||||
|
|
||||||
await loader.fetchAndUpdateRouteDataForSystemId("263");
|
// Act
|
||||||
|
await loader.fetchAndUpdateRouteDataForSystemId(systemId);
|
||||||
|
|
||||||
const routes = await loader.repository.getRoutesBySystemId("263");
|
// Assert
|
||||||
|
const routes = await loader.repository.getRoutesBySystemId(systemId);
|
||||||
|
|
||||||
expect(routes.length).toEqual(fetchRouteDataSuccessfulResponse.all.length)
|
expect(routes.length).toEqual(fetchRouteDataSuccessfulResponse.all.length)
|
||||||
});
|
});
|
||||||
@@ -106,7 +124,7 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
updateGlobalFetchMockJsonToThrowSyntaxError();
|
updateGlobalFetchMockJsonToThrowSyntaxError();
|
||||||
|
|
||||||
await assertAsyncCallbackThrowsApiResponseError(async () => {
|
await assertAsyncCallbackThrowsApiResponseError(async () => {
|
||||||
await loader.fetchAndUpdateRouteDataForSystemId("263");
|
await loader.fetchAndUpdateRouteDataForSystemId(systemId);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -128,14 +146,23 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe("fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId", () => {
|
describe("fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId", () => {
|
||||||
|
const systemId = "263";
|
||||||
it("updates stop and polyline data if response received", async () => {
|
it("updates stop and polyline data if response received", async () => {
|
||||||
|
// Arrange
|
||||||
|
// Test pruning of stops only
|
||||||
|
const stopsToPrune = generateMockStops();
|
||||||
|
await Promise.all(stopsToPrune.map(async (stop) => {
|
||||||
|
stop.systemId = systemId;
|
||||||
|
await loader.repository.addOrUpdateStop(stop);
|
||||||
|
}));
|
||||||
|
|
||||||
updateGlobalFetchMockJson(fetchStopAndPolylineDataSuccessfulResponse);
|
updateGlobalFetchMockJson(fetchStopAndPolylineDataSuccessfulResponse);
|
||||||
|
|
||||||
const stopsArray = Object.values(fetchStopAndPolylineDataSuccessfulResponse.stops);
|
const stopsArray = Object.values(fetchStopAndPolylineDataSuccessfulResponse.stops);
|
||||||
|
|
||||||
await loader.fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId("263");
|
await loader.fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId(systemId);
|
||||||
|
|
||||||
const stops = await loader.repository.getStopsBySystemId("263");
|
const stops = await loader.repository.getStopsBySystemId(systemId);
|
||||||
expect(stops.length).toEqual(stopsArray.length);
|
expect(stops.length).toEqual(stopsArray.length);
|
||||||
|
|
||||||
await Promise.all(stops.map(async (stop) => {
|
await Promise.all(stops.map(async (stop) => {
|
||||||
@@ -143,7 +170,7 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
expect(orderedStops.length).toBeGreaterThan(0);
|
expect(orderedStops.length).toBeGreaterThan(0);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const routes = await loader.repository.getRoutesBySystemId("263");
|
const routes = await loader.repository.getRoutesBySystemId(systemId);
|
||||||
routes.forEach((route) => {
|
routes.forEach((route) => {
|
||||||
expect(route.polylineCoordinates.length).toBeGreaterThan(0);
|
expect(route.polylineCoordinates.length).toBeGreaterThan(0);
|
||||||
});
|
});
|
||||||
@@ -153,7 +180,7 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
updateGlobalFetchMockJsonToThrowSyntaxError();
|
updateGlobalFetchMockJsonToThrowSyntaxError();
|
||||||
|
|
||||||
await assertAsyncCallbackThrowsApiResponseError(async () => {
|
await assertAsyncCallbackThrowsApiResponseError(async () => {
|
||||||
await loader.fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId("263");
|
await loader.fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId(systemId);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -174,13 +201,20 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("fetchAndUpdateShuttleDataForSystemId", () => {
|
describe("fetchAndUpdateShuttleDataForSystemId", () => {
|
||||||
|
const systemId = "263";
|
||||||
it("updates shuttle data in repository if response received", async () => {
|
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);
|
||||||
|
}))
|
||||||
|
|
||||||
updateGlobalFetchMockJson(fetchShuttleDataSuccessfulResponse);
|
updateGlobalFetchMockJson(fetchShuttleDataSuccessfulResponse);
|
||||||
const busesInResponse = Object.values(fetchShuttleDataSuccessfulResponse.buses);
|
const busesInResponse = Object.values(fetchShuttleDataSuccessfulResponse.buses);
|
||||||
|
|
||||||
await loader.fetchAndUpdateShuttleDataForSystemId("263");
|
await loader.fetchAndUpdateShuttleDataForSystemId(systemId);
|
||||||
|
|
||||||
const shuttles = await loader.repository.getShuttlesBySystemId("263");
|
const shuttles = await loader.repository.getShuttlesBySystemId(systemId);
|
||||||
|
|
||||||
expect(shuttles.length).toEqual(busesInResponse.length);
|
expect(shuttles.length).toEqual(busesInResponse.length);
|
||||||
});
|
});
|
||||||
@@ -189,7 +223,7 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
updateGlobalFetchMockJsonToThrowSyntaxError();
|
updateGlobalFetchMockJsonToThrowSyntaxError();
|
||||||
|
|
||||||
await assertAsyncCallbackThrowsApiResponseError(async () => {
|
await assertAsyncCallbackThrowsApiResponseError(async () => {
|
||||||
await loader.fetchAndUpdateShuttleDataForSystemId("263");
|
await loader.fetchAndUpdateShuttleDataForSystemId(systemId);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -229,9 +263,15 @@ describe("ApiBasedRepositoryLoader", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("fetchAndUpdateEtaDataForStopId", () => {
|
describe("fetchAndUpdateEtaDataForStopId", () => {
|
||||||
it("updates ETA data for stop id if response received", async () => {
|
|
||||||
updateGlobalFetchMockJson(fetchEtaDataSuccessfulResponse);
|
|
||||||
const stopId = "177666";
|
const stopId = "177666";
|
||||||
|
it("updates ETA data for stop id if response received", async () => {
|
||||||
|
const etasToPrune = generateMockEtas();
|
||||||
|
await Promise.all(etasToPrune.map(async (eta) => {
|
||||||
|
eta.stopId = stopId;
|
||||||
|
await loader.repository.addOrUpdateEta(eta);
|
||||||
|
}))
|
||||||
|
|
||||||
|
updateGlobalFetchMockJson(fetchEtaDataSuccessfulResponse);
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const etasFromResponse = fetchEtaDataSuccessfulResponse.ETAs[stopId]
|
const etasFromResponse = fetchEtaDataSuccessfulResponse.ETAs[stopId]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user