1import { describe, expect, it } from "vite-plus/test";
2import { parseMarkdownDocument } from "../../lib/markdownDocument";
3import { pullRequestDescriptionContent } from "./pullRequestDescriptionContent";
4
5describe("pull request description content", () => {
6 it("keeps screenshot attachments and does not turn code examples or local paths into media", () => {
7 const result = pullRequestDescriptionContent(
8 parseMarkdownDocument(
9 [
10 "Fixes reconnects.",
11 "```markdown\n![Example](https://example.com/code.png)\n```",
12 "![Before](https://example.com/before.png)",
13 "![After](https://example.com/after.png)",
14 "![Duplicate](https://example.com/before.png)",
15 "![Local](screenshots/local.png)",
16 ].join("\n\n"),
17 ),
18 );
19 expect(result.attachments).toEqual([
20 { uri: "https://example.com/before.png", caption: "Before", kind: "image" },
21 { uri: "https://example.com/after.png", caption: "After", kind: "image" },
22 ]);
23 expect(result.preview).toContain("Fixes reconnects.");
24 expect(result.preview).not.toContain("Duplicate");
25 });
26
27 it("reads formatted prose and list items without leaking hidden HTML metadata", () => {
28 const result = pullRequestDescriptionContent(
29 parseMarkdownDocument(
30 "<!-- bot metadata -->\n\nKeeps **sessions**\nalive.\n\n- Reconnect\n- Restore output",
31 ),
32 );
33 expect(result.preview).toBe("Keeps sessions\nalive.\nReconnect\n\nRestore output");
34 });
35});