import { describe, it, expect, vi } from "vitest"; import { render, screen, fireEvent } from "@testing-library/react"; import { FluentProvider, webLightTheme } from "@fluentui/react-components"; import { MemoryRouter } from "react-router-dom"; import { ConfigPage } from "../ConfigPage"; // Mock all tab components to avoid deep render trees and API calls. vi.mock("../../components/config", () => ({ JailsTab: ({ initialJail }: { initialJail?: string }) => (
JailsTab
), FiltersTab: () =>
FiltersTab
, ActionsTab: () =>
ActionsTab
, ServerTab: () =>
ServerTab
, RegexTesterTab: () =>
RegexTesterTab
, ExportTab: () =>
ExportTab
, })); function renderPage() { return render( , ); } describe("ConfigPage", () => { it("renders the Jails tab by default", () => { renderPage(); expect(screen.getByTestId("jails-tab")).toBeInTheDocument(); }); it("switches to Filters tab when Filters tab is clicked", () => { renderPage(); fireEvent.click(screen.getByRole("tab", { name: /filters/i })); expect(screen.getByTestId("filters-tab")).toBeInTheDocument(); expect(screen.queryByTestId("jails-tab")).not.toBeInTheDocument(); }); it("switches to Actions tab when Actions tab is clicked", () => { renderPage(); fireEvent.click(screen.getByRole("tab", { name: /actions/i })); expect(screen.getByTestId("actions-tab")).toBeInTheDocument(); }); it("switches to Server tab when Server tab is clicked", () => { renderPage(); fireEvent.click(screen.getByRole("tab", { name: /server/i })); expect(screen.getByTestId("server-tab")).toBeInTheDocument(); }); it("renders the page heading", () => { renderPage(); expect(screen.getByRole("heading", { name: /configuration/i })).toBeInTheDocument(); }); it("selects the Jails tab based on location state", () => { render( , ); const jailsTab = screen.getByTestId("jails-tab"); expect(jailsTab).toBeInTheDocument(); expect(jailsTab).toHaveAttribute("data-initial-jail", "sshd"); }); });