From 02e440773a6bfeb63beb03fcc6c38b89af56bc30 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Wed, 16 Apr 2025 17:18:48 -0700 Subject: [PATCH] add functionality to normalize the spots available if over capacity --- .../ChapmanApiBasedParkingRepositoryLoader.ts | 4 ++-- ...piBasedParkingRepositoryLoaderTests.test.ts | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/loaders/parking/ChapmanApiBasedParkingRepositoryLoader.ts b/src/loaders/parking/ChapmanApiBasedParkingRepositoryLoader.ts index f922c5b..9730df8 100644 --- a/src/loaders/parking/ChapmanApiBasedParkingRepositoryLoader.ts +++ b/src/loaders/parking/ChapmanApiBasedParkingRepositoryLoader.ts @@ -48,7 +48,7 @@ export class ChapmanApiBasedParkingRepositoryLoader implements ParkingRepository } } - private constructIParkingStructureFromJson(jsonStructure: any) { + public constructIParkingStructureFromJson(jsonStructure: any) { const structureToReturn: IParkingStructure = { capacity: jsonStructure.Capacity, coordinates: { @@ -57,7 +57,7 @@ export class ChapmanApiBasedParkingRepositoryLoader implements ParkingRepository }, id: ChapmanApiBasedParkingRepositoryLoader.generateId(jsonStructure.Address), name: jsonStructure.Name, - spotsAvailable: jsonStructure.CurrentCount, + spotsAvailable: jsonStructure.CurrentCount > jsonStructure.Capacity ? jsonStructure.Capacity : jsonStructure.CurrentCount, address: jsonStructure.Address } diff --git a/test/loaders/parking/ChapmanApiBasedParkingRepositoryLoaderTests.test.ts b/test/loaders/parking/ChapmanApiBasedParkingRepositoryLoaderTests.test.ts index 55d82c5..9d9ebfc 100644 --- a/test/loaders/parking/ChapmanApiBasedParkingRepositoryLoaderTests.test.ts +++ b/test/loaders/parking/ChapmanApiBasedParkingRepositoryLoaderTests.test.ts @@ -42,8 +42,6 @@ describe("ChapmanApiBasedParkingRepositoryLoader", () => { }); }); - - describe("fetchAndUpdateParkingStructures", () => { it("fetches and update parking structures with unique IDs", async () => { updateGlobalFetchMockJson(chapmanParkingStructureData); @@ -89,4 +87,20 @@ describe("ChapmanApiBasedParkingRepositoryLoader", () => { }); }) }); + + describe("constructIParkingStructureFromJson", () => { + it("normalizes the spots available if it's over the capacity", async () => { + const sampleJsonStructure: any = { + Capacity: 10, + Latitude: 1, + Longitude: 1, + Address: "300 E Walnut, Orange, CA 92867", + Name: "Anderson Structure", + CurrentCount: 11, + }; + + const returnedStructure = loader.constructIParkingStructureFromJson(sampleJsonStructure); + expect(returnedStructure.spotsAvailable).toEqual(returnedStructure.capacity); + }); + }); });