mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
Merge branch 'main' into chore/improve-apns-performance
This commit is contained in:
@@ -59,6 +59,7 @@ describe("ChapmanApiBasedParkingRepositoryLoader", () => {
|
||||
},
|
||||
name: "Anderson Structure",
|
||||
id: "",
|
||||
updatedTime: new Date(),
|
||||
},
|
||||
{
|
||||
address: "200 W Sycamore Ave, Orange, CA 92866-1053",
|
||||
@@ -70,12 +71,18 @@ describe("ChapmanApiBasedParkingRepositoryLoader", () => {
|
||||
},
|
||||
name: "Barrera",
|
||||
id: "",
|
||||
updatedTime: new Date(),
|
||||
}
|
||||
];
|
||||
expectedStructures[0].id = ChapmanApiBasedParkingRepositoryLoader.generateId(expectedStructures[0].address);
|
||||
expectedStructures[1].id = ChapmanApiBasedParkingRepositoryLoader.generateId(expectedStructures[1].address);
|
||||
|
||||
const structuresFromLoader = await loader.repository.getParkingStructures();
|
||||
|
||||
// Set updatedTimeMs on expected data to avoid comparison
|
||||
expectedStructures[0].updatedTime = structuresFromLoader[0].updatedTime;
|
||||
expectedStructures[1].updatedTime = structuresFromLoader[1].updatedTime;
|
||||
|
||||
expect(structuresFromLoader).toEqual(expectedStructures);
|
||||
});
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ describe("ETANotificationScheduler", () => {
|
||||
stopId: stop.id,
|
||||
secondsRemaining: 120,
|
||||
systemId: "1",
|
||||
updatedTime: new Date(),
|
||||
};
|
||||
|
||||
const notificationData1 = {
|
||||
|
||||
@@ -13,7 +13,8 @@ describe("InMemoryParkingRepository", () => {
|
||||
id: "1",
|
||||
name: "Anderson Parking Structure",
|
||||
capacity: 100,
|
||||
address: "300 E Walnut Ave, Orange, CA 92867"
|
||||
address: "300 E Walnut Ave, Orange, CA 92867",
|
||||
updatedTime: new Date(),
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -4,6 +4,7 @@ import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/ap
|
||||
import { InterchangeSystem } from "../../src/entities/InterchangeSystem";
|
||||
import assert = require("node:assert");
|
||||
|
||||
|
||||
describe("ParkingSystemResolver", () => {
|
||||
const holder = setupTestServerHolder();
|
||||
const context = setupTestServerContext();
|
||||
@@ -40,6 +41,7 @@ describe("ParkingSystemResolver", () => {
|
||||
longitude
|
||||
}
|
||||
address
|
||||
updatedTime
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,15 +49,24 @@ describe("ParkingSystemResolver", () => {
|
||||
`
|
||||
|
||||
it("gets parking structures associated with the system id", async () => {
|
||||
const expectedParkingStructures = generateParkingStructures();
|
||||
let expectedParkingStructures = generateParkingStructures();
|
||||
await Promise.all(expectedParkingStructures.map(async (structure) => {
|
||||
await context.systems[0].parkingRepository?.addOrUpdateParkingStructure(structure);
|
||||
}));
|
||||
|
||||
// Dates are transformed into epoch timestamps when serialized
|
||||
expectedParkingStructures = expectedParkingStructures.map((structure) => {
|
||||
const newStructure = { ...structure };
|
||||
// @ts-ignore
|
||||
newStructure.updatedTime = newStructure.updatedTime.getTime();
|
||||
return newStructure;
|
||||
});
|
||||
|
||||
const response = await getResponseFromQueryNeedingSystemId(query);
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined();
|
||||
|
||||
const parkingStructures = (response.body.singleResult.data as any).system.parkingSystem.parkingStructures;
|
||||
expect(parkingStructures).toEqual(expectedParkingStructures);
|
||||
});
|
||||
@@ -65,7 +76,9 @@ describe("ParkingSystemResolver", () => {
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined();
|
||||
|
||||
const parkingStructures = (response.body.singleResult.data as any).system.parkingSystem.parkingStructures;
|
||||
|
||||
expect(parkingStructures).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
@@ -87,6 +100,7 @@ describe("ParkingSystemResolver", () => {
|
||||
longitude
|
||||
}
|
||||
address
|
||||
updatedTime
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -111,11 +125,14 @@ describe("ParkingSystemResolver", () => {
|
||||
await context.systems[0].parkingRepository?.addOrUpdateParkingStructure(structure);
|
||||
}));
|
||||
const expectedParkingStructure = generatedParkingStructures[1];
|
||||
// @ts-ignore
|
||||
expectedParkingStructure.updatedTime = expectedParkingStructure.updatedTime.getTime();
|
||||
|
||||
const response = await getResponseForParkingStructureQuery(expectedParkingStructure.id);
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined();
|
||||
|
||||
const parkingStructure = (response.body.singleResult.data as any).system.parkingSystem.parkingStructure;
|
||||
expect(parkingStructure).toEqual(expectedParkingStructure);
|
||||
});
|
||||
@@ -132,6 +149,7 @@ describe("ParkingSystemResolver", () => {
|
||||
|
||||
assert(response.body.kind === "single");
|
||||
expect(response.body.singleResult.errors).toBeUndefined();
|
||||
|
||||
const parkingStructure = (response.body.singleResult.data as any).system.parkingSystem.parkingStructure;
|
||||
expect(parkingStructure).toBeNull();
|
||||
});
|
||||
|
||||
@@ -16,7 +16,8 @@ export function generateParkingStructures(): IParkingStructure[] {
|
||||
"id": "b0723baf8a6b8bcc37c821473373049e",
|
||||
"name": "Anderson Structure",
|
||||
"spotsAvailable": 163,
|
||||
"address": "300 E Walnut, Orange, CA 92867"
|
||||
"address": "300 E Walnut, Orange, CA 92867",
|
||||
updatedTime: new Date(),
|
||||
},
|
||||
{
|
||||
"capacity": 692,
|
||||
@@ -27,7 +28,8 @@ export function generateParkingStructures(): IParkingStructure[] {
|
||||
"id": "81b9e1ed004cf6def2e6c568aaf79ece",
|
||||
"name": "Barrera",
|
||||
"spotsAvailable": 179,
|
||||
"address": "200 W Sycamore Ave, Orange, CA 92866-1053"
|
||||
"address": "200 W Sycamore Ave, Orange, CA 92866-1053",
|
||||
updatedTime: new Date(),
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -43,7 +45,8 @@ export function generateMockShuttles(): IShuttle[] {
|
||||
latitude: 10,
|
||||
longitude: 20
|
||||
},
|
||||
orientationInDegrees: 25.163
|
||||
orientationInDegrees: 25.163,
|
||||
updatedTime: new Date(),
|
||||
},
|
||||
{
|
||||
id: "sh2",
|
||||
@@ -54,7 +57,8 @@ export function generateMockShuttles(): IShuttle[] {
|
||||
latitude: 15,
|
||||
longitude: 25
|
||||
},
|
||||
orientationInDegrees: 50.912
|
||||
orientationInDegrees: 50.912,
|
||||
updatedTime: new Date(),
|
||||
},
|
||||
{
|
||||
id: "sh3",
|
||||
@@ -65,40 +69,41 @@ export function generateMockShuttles(): IShuttle[] {
|
||||
latitude: 30,
|
||||
longitude: 40
|
||||
},
|
||||
orientationInDegrees: 321.019
|
||||
orientationInDegrees: 321.019,
|
||||
updatedTime: new Date(),
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
export function generateMockRoutes(): IRoute[] {
|
||||
return [
|
||||
{ id: "r1", name: "Route 1", color: "red", systemId: "sys1", polylineCoordinates: [] },
|
||||
{ id: "r2", name: "Route 2", color: "blue", systemId: "sys2", polylineCoordinates: [] },
|
||||
{ id: "r3", name: "Route 3", color: "green", systemId: "sys3", polylineCoordinates: [] },
|
||||
{ id: "r1", name: "Route 1", color: "red", systemId: "sys1", polylineCoordinates: [], updatedTime: new Date() },
|
||||
{ id: "r2", name: "Route 2", color: "blue", systemId: "sys2", polylineCoordinates: [], updatedTime: new Date() },
|
||||
{ id: "r3", name: "Route 3", color: "green", systemId: "sys3", polylineCoordinates: [], updatedTime: new Date() },
|
||||
];
|
||||
}
|
||||
|
||||
export function generateMockStops(): IStop[] {
|
||||
return [
|
||||
{ id: "st1", name: "Stop A", systemId: "sys1", coordinates: { latitude: 10, longitude: 20 } },
|
||||
{ id: "st2", name: "Stop B", systemId: "sys2", coordinates: { latitude: 15, longitude: 25 } },
|
||||
{ id: "st3", name: "Stop C", systemId: "sys3", coordinates: { latitude: 30, longitude: 40 } },
|
||||
{ id: "st1", name: "Stop A", systemId: "sys1", coordinates: { latitude: 10, longitude: 20 }, updatedTime: new Date() },
|
||||
{ id: "st2", name: "Stop B", systemId: "sys2", coordinates: { latitude: 15, longitude: 25 }, updatedTime: new Date() },
|
||||
{ id: "st3", name: "Stop C", systemId: "sys3", coordinates: { latitude: 30, longitude: 40 }, updatedTime: new Date() },
|
||||
];
|
||||
}
|
||||
|
||||
export function generateMockOrderedStops(): IOrderedStop[] {
|
||||
return [
|
||||
{ stopId: "st1", routeId: "r1", position: 1, systemId: "sys1" },
|
||||
{ stopId: "st1", routeId: "r2", position: 2, systemId: "sys1" },
|
||||
{ stopId: "st2", routeId: "r1", position: 3, systemId: "sys1" },
|
||||
{ stopId: "st2", routeId: "r2", position: 4, systemId: "sys1" },
|
||||
{ stopId: "st1", routeId: "r1", position: 1, systemId: "sys1", updatedTime: new Date(), },
|
||||
{ stopId: "st1", routeId: "r2", position: 2, systemId: "sys1", updatedTime: new Date(), },
|
||||
{ stopId: "st2", routeId: "r1", position: 3, systemId: "sys1", updatedTime: new Date(), },
|
||||
{ stopId: "st2", routeId: "r2", position: 4, systemId: "sys1", updatedTime: new Date(), },
|
||||
];
|
||||
}
|
||||
|
||||
export function generateMockEtas(): IEta[] {
|
||||
return [
|
||||
{ shuttleId: "sh1", stopId: "st1", secondsRemaining: 120, systemId: "sys1" },
|
||||
{ shuttleId: "sh1", stopId: "st2", secondsRemaining: 180, systemId: "sys1" },
|
||||
{ shuttleId: "sh2", stopId: "st3", secondsRemaining: 240, systemId: "sys1" },
|
||||
{ shuttleId: "sh1", stopId: "st1", secondsRemaining: 120, systemId: "sys1", updatedTime: new Date() },
|
||||
{ shuttleId: "sh1", stopId: "st2", secondsRemaining: 180, systemId: "sys1", updatedTime: new Date() },
|
||||
{ shuttleId: "sh2", stopId: "st3", secondsRemaining: 240, systemId: "sys1", updatedTime: new Date() },
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user