/** * Shared test fixtures for Schedule integration tests. * * Provides realistic mock data matching the API response shapes * for schedule endpoints. */ import type { ISimpleFlight, IDirectFlight, IFlightLeg, IBoardResponse, } from "@/features/online-board/types.js"; // --------------------------------------------------------------------------- // Flight leg builder // --------------------------------------------------------------------------- function makeLeg(overrides: Partial & { index: number }): IFlightLeg { return { index: overrides.index, status: overrides.status ?? "Scheduled", flyingTime: overrides.flyingTime ?? "01:30", dayChange: overrides.dayChange ?? 0, updated: overrides.updated ?? "2022-05-27T10:00:00Z", equipment: overrides.equipment ?? { name: "Airbus A320", code: "320" }, flags: overrides.flags ?? { checkinAvailable: false, returnToAirport: false, routeChanged: false, }, operatingBy: overrides.operatingBy ?? { carrier: "SU", flightNumber: "0012" }, departure: overrides.departure ?? { scheduled: { airport: "Sheremetyevo", airportCode: "SVO", city: "Moscow", cityCode: "MOW", countryCode: "RU", }, checkingStatus: "closed", times: { scheduledDeparture: { dayChange: { value: 0, title: "" }, local: "2022-05-27T10:00:00", localTime: "10:00", tzOffset: 3, utc: "2022-05-27T07:00:00Z", }, }, }, arrival: overrides.arrival ?? { scheduled: { airport: "Pulkovo", airportCode: "LED", city: "Saint Petersburg", cityCode: "LED", countryCode: "RU", }, times: { scheduledArrival: { dayChange: { value: 0, title: "" }, local: "2022-05-27T11:30:00", localTime: "11:30", tzOffset: 3, utc: "2022-05-27T08:30:00Z", }, }, }, }; } // --------------------------------------------------------------------------- // Flight fixtures // --------------------------------------------------------------------------- export const SCHEDULE_FLIGHT_1: IDirectFlight = { id: "SU0012-20220527", flightId: { carrier: "SU", flightNumber: "0012", suffix: "", date: "20220527", }, routeType: "Direct", status: "Scheduled", flyingTime: "1h 30m", operatingBy: { carrier: "SU", flightNumber: "0012" }, leg: makeLeg({ index: 0 }), }; export const SCHEDULE_FLIGHT_2: IDirectFlight = { id: "SU0013-20220527", flightId: { carrier: "SU", flightNumber: "0013", suffix: "", date: "20220527", }, routeType: "Direct", status: "Scheduled", flyingTime: "1h 30m", operatingBy: { carrier: "SU", flightNumber: "0013" }, leg: makeLeg({ index: 0 }), }; export const ALL_SCHEDULE_FLIGHTS: ISimpleFlight[] = [ SCHEDULE_FLIGHT_1, SCHEDULE_FLIGHT_2, ]; // --------------------------------------------------------------------------- // API response fixtures // --------------------------------------------------------------------------- /** Schedule search response -- IFlight[] */ export const SCHEDULE_SEARCH_RESPONSE: ISimpleFlight[] = ALL_SCHEDULE_FLIGHTS; /** Schedule details response -- IBoardResponse */ export const SCHEDULE_DETAILS_RESPONSE: IBoardResponse = { data: { partners: ["SU"], routes: ALL_SCHEDULE_FLIGHTS, daysOfFlight: ["2022-05-27"], }, }; export const EMPTY_DETAILS_RESPONSE: IBoardResponse = { data: { partners: [], routes: [], daysOfFlight: [], }, }; export const CALENDAR_DAYS = ["2022-05-25", "2022-05-26", "2022-05-27", "2022-05-28"];