import { describe, expect, it } from "vitest"; import { draftFromMailto } from "@/store/compose"; /** * mailto: URLs arrive from anywhere — a web page, a document, another app — * so the body must reach the composer as text, never as markup. */ describe("draftFromMailto", () => { it("fills recipients, subject and body", () => { const d = draftFromMailto("mailto:ann@example.com?cc=c@x.io&bcc=d@x.io&subject=Q3%20plan&body=Hi%20Ann"); expect(d.to).toEqual([{ name: null, email: "ann@example.com" }]); expect(d.cc).toEqual([{ name: null, email: "c@x.io" }]); expect(d.bcc).toEqual([{ name: null, email: "d@x.io" }]); expect(d.showCc).toBe(true); expect(d.showBcc).toBe(true); expect(d.subject).toBe("Q3 plan"); expect(d.text).toBe("Hi Ann"); }); it("escapes markup in the body and keeps line breaks", () => { const d = draftFromMailto("mailto:x@y.io?body=%3Cimg%20src%3Dx%20onerror%3Dboom%3E%20%26%20plain%0Asecond%20line"); expect(d.html).not.toContain(""); expect(d.text).toContain(" { const d = draftFromMailto("mailto:x@y.io"); expect(d.html).toBeUndefined(); expect(d.text).toBeUndefined(); expect(d.showCc).toBe(false); }); });