import { describe, it, expect, vi } from "vitest"; import { render, screen, waitFor } from "@testing-library/react"; import CalendarPage from "./page"; // Mock the Calendar component vi.mock("@/components/calendar/Calendar", () => ({ Calendar: ({ events, isLoading, }: { events: unknown[]; isLoading: boolean; }): React.JSX.Element => (
{isLoading ? "Loading" : `${String(events.length)} events`}
), })); describe("CalendarPage", (): void => { it("should render the page title", (): void => { render(); expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent("Calendar"); }); it("should show loading state initially", (): void => { render(); expect(screen.getByTestId("calendar")).toHaveTextContent("Loading"); }); it("should render the Calendar with events after loading", async (): Promise => { render(); await waitFor((): void => { expect(screen.getByTestId("calendar")).toHaveTextContent("3 events"); }); }); it("should have proper layout structure", (): void => { const { container } = render(); const main = container.querySelector("main"); expect(main).toBeInTheDocument(); }); it("should render the subtitle text", (): void => { render(); expect(screen.getByText("View your schedule at a glance")).toBeInTheDocument(); }); });