import type { JobStatus } from "@shared/types.js"; import { fireEvent, render, screen } from "@testing-library/react"; import { useState } from "react"; import { describe, expect, it, vi } from "vitest"; import { Accordion } from "@/components/ui/accordion"; import { DangerZoneSection } from "./DangerZoneSection"; const DangerZoneHarness = ({ initialStatuses = [] as JobStatus[], onClear, }: { initialStatuses?: JobStatus[]; onClear?: () => void; }) => { const [statusesToClear, setStatusesToClear] = useState(initialStatuses); const toggleStatusToClear = (status: JobStatus) => { setStatusesToClear((prev) => prev.includes(status) ? prev.filter((s) => s !== status) : [...prev, status], ); }; return ( {})} handleClearDatabase={() => {}} isLoading={false} isSaving={false} /> ); }; describe("DangerZoneSection", () => { it("disables clear when no statuses are selected", () => { render(); const clearButton = screen.getByRole("button", { name: /clear selected/i }); expect(clearButton).toBeDisabled(); }); it("toggles status selection and confirms clear", async () => { const onClear = vi.fn(); render( , ); const appliedButton = screen.getByRole("button", { name: /^applied\b/i }); const clearButton = screen.getByRole("button", { name: /clear selected/i }); expect(clearButton).toBeEnabled(); fireEvent.click(clearButton); const confirmButton = await screen.findByRole("button", { name: /clear 1 status/i, }); fireEvent.click(confirmButton); expect(onClear).toHaveBeenCalledTimes(1); fireEvent.click(appliedButton); expect(clearButton).toBeDisabled(); }); });