rename ISystem to IPassioSystem

This commit is contained in:
2025-04-06 10:50:51 -07:00
parent 6d762ce620
commit 940d172e87
15 changed files with 31 additions and 38 deletions

View File

@@ -6,7 +6,7 @@ export interface IEntityWithId {
id: string; id: string;
} }
export interface ISystem extends IEntityWithId, IEntityWithOptionalTimestamp { export interface IPassioSystem extends IEntityWithId, IEntityWithOptionalTimestamp {
name: string; name: string;
} }

View File

@@ -1,5 +1,5 @@
import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository";
import { IEntityWithId, IEta, IRoute, IShuttle, IStop, ISystem } from "../entities/entities"; import { IEntityWithId, IEta, IRoute, IShuttle, IStop, IPassioSystem } from "../entities/entities";
import { ShuttleRepositoryLoader } from "./ShuttleRepositoryLoader"; import { ShuttleRepositoryLoader } from "./ShuttleRepositoryLoader";
export class ApiResponseError extends Error { export class ApiResponseError extends Error {
@@ -52,7 +52,7 @@ export class ApiBasedShuttleRepositoryLoader implements ShuttleRepositoryLoader
// filter down to supported systems // filter down to supported systems
const filteredSystem = json.all.find((jsonSystem: any) => jsonSystem.id === this.systemId); const filteredSystem = json.all.find((jsonSystem: any) => jsonSystem.id === this.systemId);
if (filteredSystem !== undefined) { if (filteredSystem !== undefined) {
const constructedSystem: ISystem = { const constructedSystem: IPassioSystem = {
id: filteredSystem.id, id: filteredSystem.id,
name: filteredSystem.fullname, name: filteredSystem.fullname,
}; };

View File

@@ -1,8 +1,8 @@
// Mock data // Mock data
import { IEta, IOrderedStop, IRoute, IShuttle, IStop, ISystem } from "../entities/entities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop, IPassioSystem } from "../entities/entities";
import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../repositories/ShuttleGetterSetterRepository";
const systems: ISystem[] = [ const systems: IPassioSystem[] = [
{ {
id: "1", id: "1",
name: "Chapman University", name: "Chapman University",
@@ -4455,9 +4455,6 @@ const etas: IEta[] = [
]; ];
export async function loadShuttleTestData(repository: ShuttleGetterSetterRepository) { export async function loadShuttleTestData(repository: ShuttleGetterSetterRepository) {
await Promise.all(systems.map(async (system) => {
await repository.updateSystem(system);
}));
await Promise.all(routes.map(async (route) => { await Promise.all(routes.map(async (route) => {
await repository.addOrUpdateRoute(route); await repository.addOrUpdateRoute(route);
})); }));

View File

@@ -1,8 +1,6 @@
import { IEta, IOrderedStop, IRoute, IShuttle, IStop, ISystem } from "../entities/entities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../entities/entities";
export interface ShuttleGetterRepository { export interface ShuttleGetterRepository {
getSystemIfExists(): Promise<ISystem | null>;
getStopsBySystemId(systemId: string): Promise<IStop[]>; getStopsBySystemId(systemId: string): Promise<IStop[]>;
getStopById(stopId: string): Promise<IStop | null>; getStopById(stopId: string): Promise<IStop | null>;

View File

@@ -2,7 +2,7 @@
// to convert from data repo to GraphQL schema // to convert from data repo to GraphQL schema
import { ShuttleGetterRepository } from "./ShuttleGetterRepository"; import { ShuttleGetterRepository } from "./ShuttleGetterRepository";
import { IEta, IOrderedStop, IRoute, IShuttle, IStop, ISystem } from "../entities/entities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../entities/entities";
/** /**
* ShuttleGetterRepository interface for data derived from Passio API. * ShuttleGetterRepository interface for data derived from Passio API.
@@ -12,7 +12,6 @@ import { IEta, IOrderedStop, IRoute, IShuttle, IStop, ISystem } from "../entitie
*/ */
export interface ShuttleGetterSetterRepository extends ShuttleGetterRepository { export interface ShuttleGetterSetterRepository extends ShuttleGetterRepository {
// Setter methods // Setter methods
updateSystem(system: ISystem): Promise<void>;
addOrUpdateRoute(route: IRoute): Promise<void>; addOrUpdateRoute(route: IRoute): Promise<void>;
addOrUpdateShuttle(shuttle: IShuttle): Promise<void>; addOrUpdateShuttle(shuttle: IShuttle): Promise<void>;
addOrUpdateStop(stop: IStop): Promise<void>; addOrUpdateStop(stop: IStop): Promise<void>;
@@ -25,7 +24,6 @@ export interface ShuttleGetterSetterRepository extends ShuttleGetterRepository {
removeOrderedStopIfExists(stopId: string, routeId: string): Promise<IOrderedStop | null>; removeOrderedStopIfExists(stopId: string, routeId: string): Promise<IOrderedStop | null>;
removeEtaIfExists(shuttleId: string, stopId: string): Promise<IEta | null>; removeEtaIfExists(shuttleId: string, stopId: string): Promise<IEta | null>;
clearSystemData(): Promise<void>;
clearRouteData(): Promise<void>; clearRouteData(): Promise<void>;
clearShuttleData(): Promise<void>; clearShuttleData(): Promise<void>;
clearStopData(): Promise<void>; clearStopData(): Promise<void>;

View File

@@ -7,7 +7,7 @@ import { fetchRouteDataSuccessfulResponse } from "../jsonSnapshots/fetchRouteDat
import { import {
fetchStopAndPolylineDataSuccessfulResponse fetchStopAndPolylineDataSuccessfulResponse
} from "../jsonSnapshots/fetchStopAndPolylineData/fetchStopAndPolylineDataSuccessfulResponse"; } from "../jsonSnapshots/fetchStopAndPolylineData/fetchStopAndPolylineDataSuccessfulResponse";
import { generateMockRoutes, generateMockShuttles, generateMockStops, generateMockSystems } from "../testHelpers/mockDataGenerators"; import { generateMockRoutes, generateMockShuttles, generateMockStops, generateMockPassioSystems } from "../testHelpers/mockDataGenerators";
import { import {
fetchShuttleDataSuccessfulResponse fetchShuttleDataSuccessfulResponse
} from "../jsonSnapshots/fetchShuttleData/fetchShuttleDataSuccessfulResponse"; } from "../jsonSnapshots/fetchShuttleData/fetchShuttleDataSuccessfulResponse";
@@ -33,7 +33,7 @@ describe("ApiBasedRepositoryLoader", () => {
describe("fetchAndUpdateSystemData", () => { describe("fetchAndUpdateSystemData", () => {
it("updates system data in repository if response received", async () => { it("updates system data in repository if response received", async () => {
// Arrange // Arrange
const systemsToPrune = generateMockSystems(); const systemsToPrune = generateMockPassioSystems();
await Promise.all(systemsToPrune.map(async (system) => { await Promise.all(systemsToPrune.map(async (system) => {
await loader.repository.updateSystem(system); await loader.repository.updateSystem(system);
})); }));
@@ -71,7 +71,7 @@ describe("ApiBasedRepositoryLoader", () => {
test("calls fetchAndUpdateRouteDataForSystemId for system in repository", async () => { test("calls fetchAndUpdateRouteDataForSystemId for system in repository", async () => {
const spy = jest.spyOn(loader, "fetchAndUpdateRouteDataForSystemId"); const spy = jest.spyOn(loader, "fetchAndUpdateRouteDataForSystemId");
const systems = generateMockSystems(); const systems = generateMockPassioSystems();
await loader.repository.updateSystem(systems[0]); await loader.repository.updateSystem(systems[0]);
@@ -120,7 +120,7 @@ describe("ApiBasedRepositoryLoader", () => {
it("calls fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId for system", async () => { it("calls fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId for system", async () => {
const spy = jest.spyOn(loader, "fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId"); const spy = jest.spyOn(loader, "fetchAndUpdateStopAndPolylineDataForRoutesWithSystemId");
const systems = generateMockSystems(); const systems = generateMockPassioSystems();
await loader.repository.updateSystem(systems[0]); await loader.repository.updateSystem(systems[0]);
@@ -175,7 +175,7 @@ describe("ApiBasedRepositoryLoader", () => {
it("calls fetchAndUpdateShuttleDataForSystemId for every system", async () => { it("calls fetchAndUpdateShuttleDataForSystemId for every system", async () => {
const spy = jest.spyOn(loader, "fetchAndUpdateShuttleDataForSystemId"); const spy = jest.spyOn(loader, "fetchAndUpdateShuttleDataForSystemId");
const systems = generateMockSystems(); const systems = generateMockPassioSystems();
await loader.repository.updateSystem(systems[0]); await loader.repository.updateSystem(systems[0]);
await loader.fetchAndUpdateShuttleDataForExistingSystemInRepository(); await loader.fetchAndUpdateShuttleDataForExistingSystemInRepository();
@@ -217,7 +217,7 @@ describe("ApiBasedRepositoryLoader", () => {
it("calls fetchAndUpdateEtaDataFoExistingStopsForSystemId for every system in repository", async () => { it("calls fetchAndUpdateEtaDataFoExistingStopsForSystemId for every system in repository", async () => {
const spy = jest.spyOn(loader, "fetchAndUpdateEtaDataForExistingStopsForSystemId"); const spy = jest.spyOn(loader, "fetchAndUpdateEtaDataForExistingStopsForSystemId");
const systems = generateMockSystems(); const systems = generateMockPassioSystems();
await loader.repository.updateSystem(systems[0]); await loader.repository.updateSystem(systems[0]);
await loader.fetchAndUpdateEtaDataForExistingStopsForSystemInRepository(); await loader.fetchAndUpdateEtaDataForExistingStopsForSystemInRepository();

View File

@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, it } from "@jest/globals"; import { beforeEach, describe, expect, it } from "@jest/globals";
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers"; import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
import { IEta, IShuttle, IStop, ISystem } from "../../src/entities/entities"; import { IEta, IShuttle, IStop, IPassioSystem } from "../../src/entities/entities";
import { import {
addMockEtaToRepository, addMockShuttleToRepository, addMockEtaToRepository, addMockShuttleToRepository,
addMockStopToRepository, addMockStopToRepository,
@@ -12,7 +12,7 @@ describe("EtaResolvers", () => {
const holder = setupTestServerHolder(); const holder = setupTestServerHolder();
const context = setupTestServerContext(); const context = setupTestServerContext();
let mockSystem: ISystem; let mockSystem: IPassioSystem;
let mockShuttle: IShuttle; let mockShuttle: IShuttle;
let mockStop: IStop; let mockStop: IStop;
let expectedEta: IEta; let expectedEta: IEta;

View File

@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, it } from "@jest/globals"; import { beforeEach, describe, expect, it } from "@jest/globals";
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers"; import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
import { IRoute, IStop, ISystem } from "../../src/entities/entities"; import { IRoute, IStop, IPassioSystem } from "../../src/entities/entities";
import { generateMockOrderedStops, generateMockStops } from "../testHelpers/mockDataGenerators"; import { generateMockOrderedStops, generateMockStops } from "../testHelpers/mockDataGenerators";
import { addMockRouteToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers"; import { addMockRouteToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
import assert = require("node:assert"); import assert = require("node:assert");
@@ -9,7 +9,7 @@ describe("OrderedStopResolvers", () => {
const holder = setupTestServerHolder(); const holder = setupTestServerHolder();
const context = setupTestServerContext(); const context = setupTestServerContext();
let mockSystem: ISystem; let mockSystem: IPassioSystem;
let mockRoute: IRoute; let mockRoute: IRoute;
let mockStops: IStop[]; let mockStops: IStop[];

View File

@@ -1,5 +1,5 @@
import { describe, expect, it } from "@jest/globals"; import { describe, expect, it } from "@jest/globals";
import { generateMockSystems } from "../testHelpers/mockDataGenerators"; import { generateMockPassioSystems } from "../testHelpers/mockDataGenerators";
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers"; import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
import assert = require("node:assert"); import assert = require("node:assert");
import { addMockShuttleToRepository, addMockStopToRepository } from "../testHelpers/repositorySetupHelpers"; import { addMockShuttleToRepository, addMockStopToRepository } from "../testHelpers/repositorySetupHelpers";
@@ -13,7 +13,7 @@ describe("QueryResolvers", () => {
const context = setupTestServerContext(); const context = setupTestServerContext();
async function addMockSystems() { async function addMockSystems() {
const systems = generateMockSystems(); const systems = generateMockPassioSystems();
await Promise.all(systems.map(async (system) => { await Promise.all(systems.map(async (system) => {
await context.shuttleRepository.updateSystem(system); await context.shuttleRepository.updateSystem(system);
})); }));

View File

@@ -6,14 +6,14 @@ import {
addMockSystemToRepository addMockSystemToRepository
} from "../testHelpers/repositorySetupHelpers"; } from "../testHelpers/repositorySetupHelpers";
import { generateMockOrderedStops, generateMockShuttles } from "../testHelpers/mockDataGenerators"; import { generateMockOrderedStops, generateMockShuttles } from "../testHelpers/mockDataGenerators";
import { IRoute, IStop, ISystem } from "../../src/entities/entities"; import { IRoute, IStop, IPassioSystem } from "../../src/entities/entities";
import assert = require("node:assert"); import assert = require("node:assert");
describe("RouteResolvers", () => { describe("RouteResolvers", () => {
const holder = setupTestServerHolder(); const holder = setupTestServerHolder();
const context = setupTestServerContext(); const context = setupTestServerContext();
let mockSystem: ISystem; let mockSystem: IPassioSystem;
let mockRoute: IRoute; let mockRoute: IRoute;
let mockStop: IStop; let mockStop: IStop;

View File

@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, it } from "@jest/globals"; import { beforeEach, describe, expect, it } from "@jest/globals";
import { generateMockEtas, generateMockRoutes } from "../testHelpers/mockDataGenerators"; import { generateMockEtas, generateMockRoutes } from "../testHelpers/mockDataGenerators";
import { IShuttle, ISystem } from "../../src/entities/entities"; import { IShuttle, IPassioSystem } from "../../src/entities/entities";
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers"; import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
import { addMockShuttleToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers"; import { addMockShuttleToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
import assert = require("node:assert"); import assert = require("node:assert");
@@ -10,7 +10,7 @@ describe("ShuttleResolvers", () => {
const holder = setupTestServerHolder(); const holder = setupTestServerHolder();
const context = setupTestServerContext(); const context = setupTestServerContext();
let mockSystem: ISystem; let mockSystem: IPassioSystem;
let mockShuttle: IShuttle; let mockShuttle: IShuttle;
beforeEach(async () => { beforeEach(async () => {

View File

@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it } from "@jest/globals"; import { beforeEach, describe, expect, it } from "@jest/globals";
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers"; import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
import { generateMockEtas, generateMockOrderedStops } from "../testHelpers/mockDataGenerators"; import { generateMockEtas, generateMockOrderedStops } from "../testHelpers/mockDataGenerators";
import { IStop, ISystem } from "../../src/entities/entities"; import { IStop, IPassioSystem } from "../../src/entities/entities";
import { addMockStopToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers"; import { addMockStopToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
import assert = require("node:assert"); import assert = require("node:assert");
@@ -10,7 +10,7 @@ describe("StopResolvers", () => {
const context = setupTestServerContext(); const context = setupTestServerContext();
let mockStop: IStop; let mockStop: IStop;
let mockSystem: ISystem; let mockSystem: IPassioSystem;
beforeEach(async () => { beforeEach(async () => {
mockSystem = await addMockSystemToRepository(context.shuttleRepository); mockSystem = await addMockSystemToRepository(context.shuttleRepository);

View File

@@ -7,14 +7,14 @@ import {
addMockStopToRepository, addMockStopToRepository,
addMockSystemToRepository addMockSystemToRepository
} from "../testHelpers/repositorySetupHelpers"; } from "../testHelpers/repositorySetupHelpers";
import { ISystem } from "../../src/entities/entities"; import { IPassioSystem } from "../../src/entities/entities";
import assert = require("node:assert"); import assert = require("node:assert");
describe("SystemResolvers", () => { describe("SystemResolvers", () => {
const holder = setupTestServerHolder(); const holder = setupTestServerHolder();
const context = setupTestServerContext(); const context = setupTestServerContext();
let mockSystem: ISystem; let mockSystem: IPassioSystem;
beforeEach(async () => { beforeEach(async () => {
mockSystem = await addMockSystemToRepository(context.shuttleRepository); mockSystem = await addMockSystemToRepository(context.shuttleRepository);

View File

@@ -1,9 +1,9 @@
import { IEta, IOrderedStop, IRoute, IShuttle, IStop, ISystem } from "../../src/entities/entities"; import { IEta, IOrderedStop, IRoute, IShuttle, IStop, IPassioSystem } from "../../src/entities/entities";
// Use a single set of generators in case any of the // Use a single set of generators in case any of the
// interfaces change in the future // interfaces change in the future
export function generateMockSystems(): ISystem[] { export function generateMockPassioSystems(): IPassioSystem[] {
return [ return [
{ id: "1", name: "System A" }, { id: "1", name: "System A" },
{ id: "2", name: "System B" }, { id: "2", name: "System B" },

View File

@@ -3,12 +3,12 @@ import {
generateMockRoutes, generateMockRoutes,
generateMockShuttles, generateMockShuttles,
generateMockStops, generateMockStops,
generateMockSystems generateMockPassioSystems
} from "./mockDataGenerators"; } from "./mockDataGenerators";
import { ShuttleGetterSetterRepository } from "../../src/repositories/ShuttleGetterSetterRepository"; import { ShuttleGetterSetterRepository } from "../../src/repositories/ShuttleGetterSetterRepository";
export async function addMockSystemToRepository(repository: ShuttleGetterSetterRepository) { export async function addMockSystemToRepository(repository: ShuttleGetterSetterRepository) {
const mockSystems = generateMockSystems(); const mockSystems = generateMockPassioSystems();
const mockSystem = mockSystems[0]; const mockSystem = mockSystems[0];
mockSystem.id = "1"; mockSystem.id = "1";
await repository.updateSystem(mockSystem); await repository.updateSystem(mockSystem);