// @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(
      "Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
    );
  });
});
