// @vitest-environment jsdom
import { flushSync } from "react-dom";
import { createRoot } from "react-dom/client";
import { describe, expect, it, vi } from "vitest";
import { TooltipProvider } from "@/components/ui/tooltip";
import { ThemeProvider } from "@/context/ThemeContext";
import { completeRequestItemVerdictsInteraction } from "@/fixtures/issueThreadInteractionFixtures";
import { TaskChatInteractionCard } from "./TaskChatInteractionCard";
const preference = vi.hoisted(() => ({ enabled: false }));
vi.mock("@/hooks/useCoordinatorWorkspaceEnabled", () => ({ useCoordinatorWorkspaceEnabled: () => preference }));
describe("completed item-review receipts", () => {
it.each([false, true])("retains inspectable verdicts and reasons with Coordinator enabled=%s", enabled => {
preference.enabled = enabled;
const interaction = completeRequestItemVerdictsInteraction;
const host = document.createElement("div");
document.body.append(host);
const root = createRoot(host);
try {
flushSync(() => root.render(
));
const disclosure = host.querySelector('details[data-testid="task-chat-interaction-receipt"]');
expect(disclosure).not.toBeNull();
expect(disclosure!.open).toBe(false);
disclosure!.querySelector("summary")!.click();
expect(disclosure!.open).toBe(true);
for (const result of interaction.result!.items) {
const label = interaction.payload.items.find(item => item.id === result.id)!.label;
const row = [...disclosure!.querySelectorAll("li")].find(item => item.textContent?.includes(label));
expect(row?.textContent).toContain(result.verdict);
if (result.reason) expect(row?.textContent).toContain(result.reason);
}
expect(host.querySelector('a[href^="#comment-interaction-response:"]')).toBeNull();
} finally {
flushSync(() => root.unmount());
host.remove();
}
});
});