import { describe, expect, it, vi, beforeEach } from "vitest"; import { render } from "@testing-library/react"; import Home from "./page"; // Mock Next.js navigation const mockPush = vi.fn(); vi.mock("next/navigation", () => ({ useRouter: (): { push: typeof mockPush; replace: ReturnType; prefetch: ReturnType; } => ({ push: mockPush, replace: vi.fn(), prefetch: vi.fn(), }), })); // Mock auth context vi.mock("@/lib/auth/auth-context", () => ({ useAuth: (): { user: null; isLoading: boolean; isAuthenticated: boolean; signOut: ReturnType; refreshSession: ReturnType; } => ({ user: null, isLoading: false, isAuthenticated: false, signOut: vi.fn(), refreshSession: vi.fn(), }), })); describe("Home", (): void => { beforeEach((): void => { mockPush.mockClear(); }); it("should render loading spinner", (): void => { const { container } = render(); // The home page shows a loading spinner while redirecting const spinner = container.querySelector(".animate-spin"); expect(spinner).toBeInTheDocument(); }); it("should redirect unauthenticated users to login", (): void => { render(); expect(mockPush).toHaveBeenCalledWith("/login"); }); });