import { IOrderedStop, IShuttle, IStop } from "../src/entities/ShuttleRepositoryEntities"; import { ShuttleGetterSetterRepository } from "../src/repositories/shuttle/ShuttleGetterSetterRepository"; export async function setupRouteAndOrderedStopsForShuttleRepository( shuttleRepository: ShuttleGetterSetterRepository ) { const systemId = "sys1"; const route = { id: "r1", name: "Route 1", color: "red", systemId: systemId, polylineCoordinates: [], updatedTime: new Date(), }; await shuttleRepository.addOrUpdateRoute(route); const stop1: IStop = { id: "st1", name: "Stop 1", systemId, coordinates: { latitude: 10.0, longitude: 20.0 }, updatedTime: new Date(), }; const stop2: IStop = { id: "st2", name: "Stop 2", systemId, coordinates: { latitude: 15.0, longitude: 25.0 }, updatedTime: new Date(), }; const stop3: IStop = { id: "st3", name: "Stop 3", systemId, coordinates: { latitude: 20.0, longitude: 30.0 }, updatedTime: new Date(), } await shuttleRepository.addOrUpdateStop(stop1); await shuttleRepository.addOrUpdateStop(stop2); await shuttleRepository.addOrUpdateStop(stop3); const orderedStop1: IOrderedStop = { routeId: route.id, stopId: stop1.id, position: 1, systemId, updatedTime: new Date(), }; const orderedStop2: IOrderedStop = { routeId: route.id, stopId: stop2.id, position: 2, systemId, updatedTime: new Date(), }; const orderedStop3: IOrderedStop = { routeId: route.id, stopId: stop3.id, position: 3, systemId, updatedTime: new Date(), } orderedStop1.nextStop = orderedStop2; orderedStop1.previousStop = orderedStop3; orderedStop2.nextStop = orderedStop3; orderedStop2.previousStop = orderedStop1; orderedStop3.nextStop = orderedStop1; orderedStop3.previousStop = orderedStop2; await shuttleRepository.addOrUpdateOrderedStop(orderedStop1); await shuttleRepository.addOrUpdateOrderedStop(orderedStop2); await shuttleRepository.addOrUpdateOrderedStop(orderedStop3); const sampleShuttleNotInRepository: IShuttle = { id: "sh1", name: "Shuttle 1", routeId: route.id, systemId: systemId, coordinates: stop2.coordinates, orientationInDegrees: 0, updatedTime: new Date(), }; return { route, systemId, stop1, stop2, stop3, sampleShuttleNotInRepository, }; }