import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { MemoryRouter, Route, Routes, useLocation } from "react-router-dom"; import { beforeEach, describe, expect, it, vi } from "vitest"; import ErrorPage from "@/pages/ErrorPage"; import NotFound from "@/pages/NotFound"; import ServerDetail from "@/pages/ServerDetail"; vi.mock("@/components/NetworkChart", () => ({ NetworkChart: ({ server_id, show }: { server_id: number; show: boolean }) => (
{`${server_id}:${show}`}
), })); vi.mock("@/components/ServerDetailChart", () => ({ default: ({ server_id }: { server_id: string }) => (
{server_id}
), })); vi.mock("@/components/ServerDetailOverview", () => ({ default: ({ server_id }: { server_id: string }) => (
{server_id}
), })); vi.mock("@/components/TabSwitch", () => ({ default: ({ tabs, setCurrentTab, }: { tabs: string[]; setCurrentTab: (tab: string) => void; }) => (
{tabs.map((tab) => ( ))}
), })); function LocationProbe() { const location = useLocation(); return

{location.pathname}

; } describe("simple pages", () => { it("renders explicit and translated error messages", () => { const { rerender } = render(); expect(screen.getByText("418")).toBeInTheDocument(); expect(screen.getByText("short")).toBeInTheDocument(); rerender(); expect(screen.getByText("error.somethingWentWrong")).toBeInTheDocument(); }); it("navigates back home from the not found page", async () => { const user = userEvent.setup(); render( } />

home

} />
, ); expect(screen.getByText("404")).toBeInTheDocument(); await user.click(screen.getByRole("button", { name: "error.backToHome" })); expect(screen.getByText("home")).toBeInTheDocument(); expect(screen.getByText("/")).toBeInTheDocument(); }); }); describe("ServerDetail", () => { beforeEach(() => { vi.stubGlobal("scrollTo", vi.fn()); }); it("renders detail tab by default and can switch to network tab", async () => { const user = userEvent.setup(); render( } /> , ); expect(screen.getByTestId("detail-overview")).toHaveTextContent("7"); expect(screen.getByTestId("detail-chart")).toHaveTextContent("7"); expect(screen.queryByTestId("network-chart")).not.toBeInTheDocument(); await user.click(screen.getByRole("button", { name: "Network" })); expect(await screen.findByTestId("network-chart")).toHaveTextContent( "7:true", ); expect(screen.queryByTestId("detail-chart")).not.toBeInTheDocument(); }); it("redirects when route params are missing", async () => { render( } /> redirected

} />
, ); expect(await screen.findByText("redirected")).toBeInTheDocument(); }); });