diff --git a/src/features/online-board/components/BoardDetailsHeader/FlightEvents.test.tsx b/src/features/online-board/components/BoardDetailsHeader/FlightEvents.test.tsx new file mode 100644 index 00000000..a5d4957f --- /dev/null +++ b/src/features/online-board/components/BoardDetailsHeader/FlightEvents.test.tsx @@ -0,0 +1,39 @@ +// @vitest-environment jsdom +import { describe, it, expect, vi } from "vitest"; +import { render, screen } from "@testing-library/react"; +import { FlightEvents } from "./FlightEvents.js"; + +vi.mock("@/i18n/provider.js", () => ({ useTranslation: () => ({ t: (k: string) => k }) })); + +describe("FlightEvents", () => { + it("renders null when both flags are false", () => { + const { container } = render(); + expect(container.firstChild).toBeNull(); + }); + + it("renders change-route event when changeRoute=true with description", () => { + render(); + expect(screen.getByTestId("flight-event-change-route")).toBeTruthy(); + expect(screen.getByText("SHARED.ROUTE-CHANGE")).toBeTruthy(); + }); + + it("renders reroute event when reroute=true", () => { + render(); + expect(screen.getByTestId("flight-event-reroute")).toBeTruthy(); + expect(screen.getByText("SHARED.RETURN")).toBeTruthy(); + }); + + it("renders both events when both flags true", () => { + render(); + expect(screen.getByTestId("flight-event-change-route")).toBeTruthy(); + expect(screen.getByTestId("flight-event-reroute")).toBeTruthy(); + }); + + it("hides descriptions when showDescription=false", () => { + render(); + expect(screen.getByTestId("flight-event-change-route")).toBeTruthy(); + expect(screen.getByTestId("flight-event-reroute")).toBeTruthy(); + expect(screen.queryByText("SHARED.ROUTE-CHANGE")).toBeNull(); + expect(screen.queryByText("SHARED.RETURN")).toBeNull(); + }); +}); diff --git a/src/features/online-board/components/BoardDetailsHeader/FlightEvents.tsx b/src/features/online-board/components/BoardDetailsHeader/FlightEvents.tsx new file mode 100644 index 00000000..d486c1b0 --- /dev/null +++ b/src/features/online-board/components/BoardDetailsHeader/FlightEvents.tsx @@ -0,0 +1,46 @@ +import type { FC } from "react"; +import { useTranslation } from "@/i18n/provider.js"; + +export interface FlightEventsProps { + changeRoute: boolean; + reroute: boolean; + showDescription?: boolean; +} + +export const FlightEvents: FC = ({ changeRoute, reroute, showDescription }) => { + const { t } = useTranslation(); + if (!changeRoute && !reroute) return null; + + return ( +
+ {changeRoute && ( +
+ + + + + + + + + {showDescription && ( + {t("SHARED.ROUTE-CHANGE")} + )} +
+ )} + {reroute && ( +
+ + + + {showDescription && ( + {t("SHARED.RETURN")} + )} +
+ )} +
+ ); +};