Stabilize schedule e2e date fixtures

This commit is contained in:
2026-05-28 11:56:40 +03:00
parent 5c309004f0
commit 5e33debfb4
17 changed files with 224 additions and 65 deletions
@@ -155,6 +155,22 @@ describe("DayTabs", () => {
expect(screen.getByTestId("day-select")).toBeTruthy();
});
it("deduplicates available dates before rendering the mobile select", () => {
render(
<DayTabs
selectedDate="20260416"
availableDates={["20260416", "20260416", "20260417"]}
daysBefore={1}
daysAfter={2}
locale="en"
onNavigate={() => {}}
/>,
);
const options = screen.getByTestId("day-select").querySelectorAll("option");
expect(options).toHaveLength(2);
});
// ── TZ §4.1.13.1 compliance tests ──────────────────────────────────────
it("4.1.13.1: active range today-1 to today+14 yields 16 total dates", () => {
@@ -68,8 +68,15 @@ export const DayTabs: FC<DayTabsProps> = ({
// the route has no day data). Treat every date as tappable in that
// case — matches Angular where the tabs stay enabled until we *know*
// the upstream reports no flights for a given day.
const availableSet = useMemo(() => new Set(availableDates), [availableDates]);
const disableByAvailability = availableDates.length > 0;
const uniqueAvailableDates = useMemo(
() => Array.from(new Set(availableDates)),
[availableDates],
);
const availableSet = useMemo(
() => new Set(uniqueAvailableDates),
[uniqueAvailableDates],
);
const disableByAvailability = uniqueAvailableDates.length > 0;
const visibleDates = allDates.slice(
currentPage * PAGE_SIZE,
@@ -150,7 +157,7 @@ export const DayTabs: FC<DayTabsProps> = ({
</div>
<DaySelect
selectedDate={selectedDate}
availableDates={availableDates}
availableDates={uniqueAvailableDates}
locale={locale}
onNavigate={onNavigate}
{...(mobileCaptionKey ? { captionKey: mobileCaptionKey } : {})}