Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/components/pages/PageMaintenanceMode.test.tsx
T

49 lines
1.8 KiB
TypeScript

import "@testing-library/jest-dom";
import { render, screen } from "@testing-library/react";
import React from "react";
import { MemoryRouter } from "react-router";
import { describe, expect, it, vi } from "vitest";
import PageMaintenanceMode from "./PageMaintenanceMode";
vi.mock("react-i18next", () => ({
useTranslation: () => ({
t: (key: string) =>
({
"shared.maintenance.title": "Maintenance in progress",
"shared.maintenance.description": "We're doing scheduled maintenance.",
"shared.clickHereToTryAgain": "Try again",
"503.eyebrow": "503 error",
})[key] ?? key,
}),
}));
vi.mock("~/components/brand/Logo", () => ({ default: () => <div data-testid="logo">Logo</div> }));
vi.mock("~/components/public/PublicFooter", () => ({ default: () => <footer data-testid="public-footer">Footer</footer> }));
function renderPageMaintenanceMode() {
return render(
<MemoryRouter>
<PageMaintenanceMode />
</MemoryRouter>
);
}
describe("PageMaintenanceMode", () => {
it("renders the shared 503 error-page shell with translated copy", () => {
renderPageMaintenanceMode();
const page = screen.getByTestId("error-page");
expect(page).toHaveAttribute("data-error-status", "503");
expect(screen.getByText("503 error")).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "Maintenance in progress" })).toBeInTheDocument();
expect(screen.getByText("We're doing scheduled maintenance.")).toBeInTheDocument();
});
it("renders a retry action without exposing diagnostics by default", () => {
renderPageMaintenanceMode();
expect(screen.getByRole("link", { name: "Try again" })).toHaveAttribute("href", "/");
expect(screen.queryByText("stack trace details")).not.toBeInTheDocument();
});
});