import { renderToStaticMarkup } from "react-dom/server";
import { describe, expect, it, vi } from "vite-plus/test";
import { LocalCommentAnnotation } from "./LocalCommentAnnotation";
const callbacks = {
onTextChange: vi.fn(),
onCancel: vi.fn(),
onComment: vi.fn(),
onDelete: vi.fn(),
};
describe("LocalCommentAnnotation", () => {
it("renders the draft composer directly in the selected diff", () => {
const markup = renderToStaticMarkup(
,
);
expect(markup).toContain("font-sans");
expect(markup).not.toContain("chat-composer-glass");
expect(markup).not.toContain("font-mono");
expect(markup).not.toContain("Local comment");
expect(markup).not.toContain("on +78");
expect(markup).toContain("⌘/Ctrl Enter to send");
expect(markup).toContain("Add a comment…");
expect(markup).toContain(">Comment");
expect(markup).toContain("autofocus");
const textareaControl = markup.match(/]*data-slot="textarea-control"[^>]*>/)?.[0];
expect(textareaControl).toBeDefined();
expect(textareaControl).not.toContain("ring-ring");
expect(markup).toContain("cursor-text");
});
it("renders a saved comment without a nested card or redundant range label", () => {
const markup = renderToStaticMarkup(
,
);
expect(markup).toContain("font-sans");
expect(markup).not.toContain("chat-composer-glass");
expect(markup).not.toContain("on +78");
expect(markup).toContain("Please keep this branch explicit.");
expect(markup).toContain('aria-label="Delete comment"');
expect(markup).toContain("border-s-2");
expect(markup).toContain("bg-primary/[0.045]");
expect(markup).toContain("lucide-message-circle");
});
it("renders draft text owned by the annotation wrapper", () => {
const markup = renderToStaticMarkup(
,
);
expect(markup).toContain("Keep this unsaved draft");
});
});