Align Board tab tooltip preposition to TZ-exact 'в ближайшие дни'
This commit is contained in:
@@ -396,7 +396,7 @@
|
||||
"SHORT-HOUR": "ч.",
|
||||
"SHORT-MIN": "мин.",
|
||||
"STOCK": "Акция",
|
||||
"TAB-BOARD-TOOLTIP": "Информация о фактическом выполнении рейсов на ближайшие дни",
|
||||
"TAB-BOARD-TOOLTIP": "Информация о фактическом выполнении рейсов в ближайшие дни",
|
||||
"TAB-SCHEDULE-TOOLTIP": "Информация о планируемом выполнении рейсов на ближайший год",
|
||||
"TAB-FLIGHTS-MAP-TOOLTIP": "Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
|
||||
"TERMINAL": "Терминал",
|
||||
|
||||
@@ -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(
|
||||
"Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user