import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { ArtifactGateWidget } from "./ArtifactGateWidget"; test("reject opens a freetext and combines the reason", async () => { const onRespond = vi.fn(); render( ); await userEvent.click(screen.getByRole("button", { name: /Rifiuta/ })); await userEvent.type(screen.getByRole("textbox"), "join sbagliata"); await userEvent.click(screen.getByRole("button", { name: /send/i })); expect(onRespond).toHaveBeenCalledWith({ id: "u1", kind: "artifact-gate", choices: ["reject"], text: "join sbagliata", }); }); test("approve (no opens) responds immediately without child widget", async () => { const onRespond = vi.fn(); render( ); await userEvent.click(screen.getByRole("button", { name: /Approva/ })); expect(onRespond).toHaveBeenCalledWith({ id: "u1", kind: "artifact-gate", choices: ["approve"] }); // No textbox should appear expect(screen.queryByRole("textbox")).not.toBeInTheDocument(); });