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: () =>
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();
});
});