diff --git a/src/features/online-board/components/BoardDetailsHeader/airlines.test.ts b/src/features/online-board/components/BoardDetailsHeader/airlines.test.ts new file mode 100644 index 00000000..37c3eed9 --- /dev/null +++ b/src/features/online-board/components/BoardDetailsHeader/airlines.test.ts @@ -0,0 +1,37 @@ +import { describe, it, expect } from "vitest"; +import { AIRLINES, AIRLINES_WITH_STATUS } from "./airlines.js"; + +describe("AIRLINES", () => { + it("has SU Aeroflot with registration URL and native status", () => { + const su = AIRLINES.SU; + expect(su).toBeDefined(); + expect(su?.name).toBe("Aeroflot"); + expect(su?.registrationUrl).toContain("aeroflot.ru"); + expect(su?.hasNativeStatus).toBe(true); + }); + + it("has HZ Aurora with external status URL", () => { + const hz = AIRLINES.HZ; + expect(hz?.hasNativeStatus).toBe(false); + expect(hz?.statusUrl).toContain("flyaurora"); + }); + + it("has AF AirFrance with no registration URL", () => { + const af = AIRLINES.AF; + expect(af).toBeDefined(); + expect(af?.registrationUrl).toBeUndefined(); + }); +}); + +describe("AIRLINES_WITH_STATUS", () => { + it("contains SU, HZ, FV, DP", () => { + expect(AIRLINES_WITH_STATUS.has("SU")).toBe(true); + expect(AIRLINES_WITH_STATUS.has("HZ")).toBe(true); + expect(AIRLINES_WITH_STATUS.has("FV")).toBe(true); + expect(AIRLINES_WITH_STATUS.has("DP")).toBe(true); + }); + + it("does not contain AF", () => { + expect(AIRLINES_WITH_STATUS.has("AF")).toBe(false); + }); +}); diff --git a/src/features/online-board/components/BoardDetailsHeader/airlines.ts b/src/features/online-board/components/BoardDetailsHeader/airlines.ts new file mode 100644 index 00000000..3b82ee6a --- /dev/null +++ b/src/features/online-board/components/BoardDetailsHeader/airlines.ts @@ -0,0 +1,38 @@ +export interface AirlineConfig { + name: string; + registrationUrl?: string; + hasNativeStatus: boolean; + statusUrl?: string; +} + +export const AIRLINES: Record = { + SU: { + name: "Aeroflot", + registrationUrl: "https://www.aeroflot.ru/sb/ckin/app/ru-ru", + hasNativeStatus: true, + }, + FV: { + name: "Rossiya", + registrationUrl: + "https://www.rossiya-airlines.com/flight-with-us/before_flight/the_ways_of_check-in/", + hasNativeStatus: true, + }, + HZ: { + name: "Aurora", + registrationUrl: "https://www.flyaurora.ru", + hasNativeStatus: false, + statusUrl: "https://www.flyaurora.ru", + }, + DP: { + name: "Pobeda", + registrationUrl: "https://www.pobeda.aero", + hasNativeStatus: false, + statusUrl: "https://www.pobeda.aero", + }, + AF: { + name: "AirFrance", + hasNativeStatus: false, + }, +}; + +export const AIRLINES_WITH_STATUS = new Set(["SU", "HZ", "FV", "DP"]);