import { fireEvent, render, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { FlagCell } from "@/app/(protected)/workorders/_components/list/table/cells/flag-cell"; import { WoTableHead } from "@/app/(protected)/workorders/_components/list/table/wo-table-head"; describe("FlagCell", () => { it("sets, changes, and clears a flag by named controls", () => { const onChange = vi.fn(); const { rerender } = render(); fireEvent.click(screen.getByRole("button", { name: "Add flag" })); fireEvent.click(screen.getByRole("button", { name: "Red" })); expect(onChange).toHaveBeenCalledWith("#EF4444"); rerender(); expect(screen.getByRole("button", { name: "Red flag" })).toBeInTheDocument(); fireEvent.click(screen.getByRole("button", { name: "Red flag" })); fireEvent.click(screen.getByRole("button", { name: "Blue" })); expect(onChange).toHaveBeenCalledWith("#3B82F6"); rerender(); fireEvent.click(screen.getByRole("button", { name: "Blue flag" })); fireEvent.click(screen.getByRole("button", { name: "Clear flag" })); expect(onChange).toHaveBeenCalledWith(null); }); it("exposes a non-color name when the hex is not in the palette", () => { render(); expect(screen.getByRole("button", { name: "Flagged" })).toBeInTheDocument(); }); it("names a disabled flag without exposing a button", () => { const onChange = vi.fn(); render(); expect(screen.getByRole("img", { name: "Red flag" })).toBeInTheDocument(); expect(screen.queryByRole("button", { name: "Red flag" })).toBeNull(); expect(onChange).not.toHaveBeenCalled(); }); }); describe("WoTableHead flag column", () => { it("exposes a screen-reader label for the flag column", () => { render(
, ); expect(screen.getByRole("columnheader", { name: "Flag" })).toBeInTheDocument(); }); });