Align Board tab tooltip preposition to TZ-exact 'в ближайшие дни'

This commit is contained in:
2026-04-21 19:14:41 +03:00
parent c3c1f830b9
commit 53b5359ad5
2 changed files with 93 additions and 1 deletions
+1 -1
View File
@@ -396,7 +396,7 @@
"SHORT-HOUR": "ч.",
"SHORT-MIN": "мин.",
"STOCK": "Акция",
"TAB-BOARD-TOOLTIP": "Информация о фактическом выполнении рейсов на ближайшие дни",
"TAB-BOARD-TOOLTIP": "Информация о фактическом выполнении рейсов в ближайшие дни",
"TAB-SCHEDULE-TOOLTIP": "Информация о планируемом выполнении рейсов на ближайший год",
"TAB-FLIGHTS-MAP-TOOLTIP": "Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
"TERMINAL": "Терминал",
+92
View File
@@ -0,0 +1,92 @@
// @vitest-environment jsdom
import { describe, it, expect, vi } from "vitest";
import { render, screen } from "@testing-library/react";
import { PageTabs } from "./PageTabs.js";
import ruCommon from "@/i18n/locales/ru/common.json" with { type: "json" };
// Mock Link component from Modern.js router
vi.mock("@modern-js/runtime/router", () => ({
Link: ({
children,
to,
"data-testid": testid,
title,
"aria-current": ariaCurrent,
...props
}: {
children: React.ReactNode;
to: string;
className?: string;
"data-testid"?: string;
title?: string;
"aria-current"?: "page";
[k: string]: unknown;
}) => (
<a
href={to}
data-testid={testid}
title={title}
aria-current={ariaCurrent}
{...props}
>
{children}
</a>
),
}));
// Mock i18n provider
vi.mock("@/i18n/provider.js", () => ({
useTranslation: () => ({
t: (key: string) => {
const parts = key.split(".");
let value: unknown = ruCommon as Record<string, unknown>;
for (const part of parts) {
if (typeof value === "object" && value !== null && part in value) {
value = (value as Record<string, unknown>)[part];
} else {
return key; // fallback to key if path not found
}
}
return value as string;
},
}),
}));
// Mock useLocale hook
vi.mock("@/i18n/useLocale.js", () => ({
useLocale: () => ({ locale: "ru-ru" }),
}));
// Mock feature flag
vi.mock("@/features/flights-map/hooks/useFeatureFlag.js", () => ({
useFeatureFlag: () => true,
}));
// Suppress SCSS import errors in jsdom
vi.mock("./PageTabs.scss", () => ({}));
describe("4.1 section-tab tooltips match TZ verbatim (Russian)", () => {
it("Board tooltip: 'Информация о фактическом выполнении рейсов в ближайшие дни'", () => {
render(<PageTabs viewType="onlineboard" showFlightsMap />);
const tab = screen.getByTestId("onlineboard-tab");
expect(tab.getAttribute("title")).toBe(
"Информация о фактическом выполнении рейсов в ближайшие дни",
);
});
it("Schedule tooltip: 'Информация о планируемом выполнении рейсов на ближайший год'", () => {
render(<PageTabs viewType="schedule" showFlightsMap />);
const tab = screen.getByTestId("schedule-tab");
expect(tab.getAttribute("title")).toBe(
"Информация о планируемом выполнении рейсов на ближайший год",
);
});
it("Flight-Map tooltip: 'Картографический сервис представления информации об маршрутной сети «Аэрофлот»'", () => {
render(<PageTabs viewType="flights-map" showFlightsMap />);
const tab = screen.getByTestId("flights-map-tab");
expect(tab.getAttribute("title")).toBe(
"Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
);
});
});