mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
107 lines
3.8 KiB
TypeScript
107 lines
3.8 KiB
TypeScript
import { beforeEach, describe, expect, it } from "@jest/globals";
|
|
import { InMemoryParkingRepository } from "../../src/repositories/InMemoryParkingRepository";
|
|
import { IParkingStructure } from "../../src/entities/ParkingRepositoryEntities";
|
|
|
|
describe("InMemoryParkingRepository", () => {
|
|
let repository: InMemoryParkingRepository;
|
|
const testStructure: IParkingStructure = {
|
|
coordinates: {
|
|
latitude: 33.794795,
|
|
longitude: -117.850807,
|
|
},
|
|
spotsAvailable: 0,
|
|
id: "1",
|
|
name: "Anderson Parking Structure",
|
|
capacity: 100,
|
|
address: "300 E Walnut Ave, Orange, CA 92867",
|
|
updatedTimeMs: Date.now(),
|
|
};
|
|
|
|
beforeEach(() => {
|
|
repository = new InMemoryParkingRepository();
|
|
});
|
|
|
|
describe("addOrUpdateParkingStructure", () => {
|
|
it("should add a new parking structure", async () => {
|
|
await repository.addOrUpdateParkingStructure(testStructure);
|
|
const result = await repository.getParkingStructureById(testStructure.id);
|
|
expect(result).toEqual(testStructure);
|
|
});
|
|
|
|
it("should update existing parking structure", async () => {
|
|
await repository.addOrUpdateParkingStructure(testStructure);
|
|
const updatedStructure = { ...testStructure, name: "Updated Garage" };
|
|
await repository.addOrUpdateParkingStructure(updatedStructure);
|
|
const result = await repository.getParkingStructureById(testStructure.id);
|
|
expect(result).toEqual(updatedStructure);
|
|
});
|
|
});
|
|
|
|
describe("removeParkingStructureIfExists", () => {
|
|
it("should remove existing parking structure and return it", async () => {
|
|
await repository.addOrUpdateParkingStructure(testStructure);
|
|
const removed = await repository.removeParkingStructureIfExists(testStructure.id);
|
|
expect(removed).toEqual(testStructure);
|
|
const result = await repository.getParkingStructureById(testStructure.id);
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it("should return null when removing non-existent structure", async () => {
|
|
const result = await repository.removeParkingStructureIfExists("non-existent");
|
|
expect(result).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("clearParkingStructureData", () => {
|
|
it("should remove all parking structures", async () => {
|
|
const structures = [
|
|
testStructure,
|
|
{ ...testStructure, id: "test-id-2", name: "Second Garage" }
|
|
];
|
|
|
|
for (const structure of structures) {
|
|
await repository.addOrUpdateParkingStructure(structure);
|
|
}
|
|
|
|
await repository.clearParkingStructureData();
|
|
const result = await repository.getParkingStructures();
|
|
expect(result).toHaveLength(0);
|
|
});
|
|
});
|
|
|
|
describe("getParkingStructures", () => {
|
|
it("should return empty array when no structures exist", async () => {
|
|
const result = await repository.getParkingStructures();
|
|
expect(result).toEqual([]);
|
|
});
|
|
|
|
it("should return all added structures", async () => {
|
|
const structures = [
|
|
testStructure,
|
|
{ ...testStructure, id: "test-id-2", name: "Second Garage" }
|
|
];
|
|
|
|
for (const structure of structures) {
|
|
await repository.addOrUpdateParkingStructure(structure);
|
|
}
|
|
|
|
const result = await repository.getParkingStructures();
|
|
expect(result).toHaveLength(2);
|
|
expect(result).toEqual(expect.arrayContaining(structures));
|
|
});
|
|
});
|
|
|
|
describe("getParkingStructureById", () => {
|
|
it("should return null for non-existent structure", async () => {
|
|
const result = await repository.getParkingStructureById("non-existent");
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it("should return structure by id", async () => {
|
|
await repository.addOrUpdateParkingStructure(testStructure);
|
|
const result = await repository.getParkingStructureById(testStructure.id);
|
|
expect(result).toEqual(testStructure);
|
|
});
|
|
});
|
|
});
|