The Map tab provided a form for editing world-map color thresholds (low, medium, high). Moving this into the Server tab consolidates all server-side configuration in one place. - Add map color thresholds section to ServerTab with full validation - Load map thresholds on component mount with useEffect - Implement auto-save for threshold changes via useAutoSave hook - Display threshold color interpolation guide - Remove MapTab component import from ConfigPage - Remove 'map' from TabValue type - Remove Map tab element from TabList - Remove conditional render for MapTab - Remove MapTab from barrel export (index.ts) - Delete MapTab.tsx file - Update ConfigPage test to remove MapTab mock All 123 frontend tests pass.
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
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: () => <div data-testid="jails-tab">JailsTab</div>,
|
|
FiltersTab: () => <div data-testid="filters-tab">FiltersTab</div>,
|
|
ActionsTab: () => <div data-testid="actions-tab">ActionsTab</div>,
|
|
ServerTab: () => <div data-testid="server-tab">ServerTab</div>,
|
|
RegexTesterTab: () => <div data-testid="regex-tab">RegexTesterTab</div>,
|
|
ExportTab: () => <div data-testid="export-tab">ExportTab</div>,
|
|
}));
|
|
|
|
function renderPage() {
|
|
return render(
|
|
<MemoryRouter>
|
|
<FluentProvider theme={webLightTheme}>
|
|
<ConfigPage />
|
|
</FluentProvider>
|
|
</MemoryRouter>,
|
|
);
|
|
}
|
|
|
|
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();
|
|
});
|
|
});
|