import { render, screen } from "@testing-library/react"; import { MemoryRouter, Route, Routes } from "react-router-dom"; import { describe, expect, it, vi } from "vitest"; import { ProtectedRoute } from "./protected-route"; const mockUseAuth = vi.fn(); vi.mock("../state/auth", () => ({ useAuth: () => mockUseAuth() })); describe("ProtectedRoute", () => { it("shows loading while session is resolving", () => { mockUseAuth.mockReturnValue({ state: "loading" }); render(
private content
); expect(screen.getByText("Checking session...")).toBeInTheDocument(); }); it("redirects unauthenticated users to login", () => { mockUseAuth.mockReturnValue({ state: "unauthenticated" }); render(
private content
} /> login page} />
); expect(screen.getByText("login page")).toBeInTheDocument(); }); });