import { describe, expect, it } from "vitest"; import { htmlToPlainText, plainTextFromMaybeHtml, resolveParsedMailBody, } from "@/utils/mail-body-text"; describe("mail-body-text", () => { it("htmlToPlainText keeps line breaks and Chinese", () => { const html = "
\u67dc\u53f7\uff1aWHSU8127240
"; const t = htmlToPlainText(html); expect(t).toContain("\u8bf7\u67e5\u6536\u65b0\u589e\u9884\u62a5\uff1a\u65b0\u8fb0\u6cfd"); expect(t).toContain("\u67dc\u53f7\uff1aWHSU8127240"); }); it("prefers fuller HTML when text/plain is a stub", () => { const body = resolveParsedMailBody({ text: "\u8bf7\u67e5\u6536\u90ae\u4ef6", html: "DO\u4e5f\u540c\u6b65\u4e0a\u4f20\uff0c\u8bf7\u6ce8\u610f\u67e5\u6536\uff01
", }); expect(body).toContain("WHSU8127240"); expect(body).toContain("DO\u4e5f\u540c\u6b65\u4e0a\u4f20"); }); it("keeps longer HTML over short text/plain", () => { const long = "\u5b8c\u6574\u8f6c\u53d1\u6b63\u6587\u5185\u5bb9".repeat(20); const body = resolveParsedMailBody({ text: "short stub", html: `