import { fireEvent, render, screen } from "@testing-library/react"; import { MemoryRouter, useNavigate } from "react-router-dom"; import { describe, expect, it } from "vitest"; import { AppSidebarProvider, useAppSidebar } from "@/contexts/AppSidebarContext"; const Harness = () => { const navigate = useNavigate(); const { attachmentSection, setAttachmentSection, inboxFilter, setInboxFilter } = useAppSidebar(); return (
{attachmentSection} {inboxFilter}
); }; describe("AppSidebarProvider", () => { it("keeps page controls local and resets them after a route change", () => { render( , ); fireEvent.click(screen.getByRole("button", { name: "Select media" })); fireEvent.click(screen.getByRole("button", { name: "Select unread" })); expect(screen.getByTestId("attachment-section")).toHaveTextContent("media"); expect(screen.getByTestId("inbox-filter")).toHaveTextContent("unread"); fireEvent.click(screen.getByRole("button", { name: "Change route" })); expect(screen.getByTestId("attachment-section")).toHaveTextContent("all"); expect(screen.getByTestId("inbox-filter")).toHaveTextContent("all"); }); });