/** * ExportDrawer — render smoke tests * * Verify the promoted component renders without throwing and exposes the * correct accessible structure when open. ExportDrawer is fully controlled * (no built-in trigger); it must be wrapped in TooltipProvider. */ import { render, screen } from "@testing-library/react" import { describe, expect, it, vi } from "vitest" import { TooltipProvider } from "@/components/ui/tooltip" import { ExportDrawer } from "./export-drawer" function Wrapper({ children }: { children: React.ReactNode }) { return {children} } describe("ExportDrawer", () => { const noop = vi.fn() it("renders without throwing when closed", () => { expect(() => render(, { wrapper: Wrapper }), ).not.toThrow() }) it("renders the drawer title when open", () => { render( , { wrapper: Wrapper }, ) expect(screen.getByRole("heading", { name: /export/i })).toBeInTheDocument() }) it("renders the Export submit button when open", () => { render( , { wrapper: Wrapper }, ) const buttons = screen.getAllByRole("button", { name: /export/i }) expect(buttons.length).toBeGreaterThan(0) }) it("renders the Cancel button when open", () => { render( , { wrapper: Wrapper }, ) expect(screen.getByRole("button", { name: /cancel/i })).toBeInTheDocument() }) it("renders the date range helper text when open", () => { const { baseElement } = render( , { wrapper: Wrapper }, ) // The form shows a date range section — confirmed by looking for the "Date range" label expect(baseElement.textContent).toMatch(/date range/i) }) it("shows file format options when open", () => { render( , { wrapper: Wrapper }, ) // The format field renders radio tiles — at least one "CSV" label should be visible const csvElements = screen.getAllByText(/csv/i) expect(csvElements.length).toBeGreaterThan(0) }) })