import { describe, it, expect } from "vitest"; import { processEmailContent } from "./html-processor"; import type { AttachmentData } from "../types"; describe("processEmailContent — body extraction", () => { it("extracts content inside
tags", () => { const html = "Hello
"; expect(processEmailContent(html)).toBe("Hello
"); }); it("handles body tag with attributes", () => { const html = 'Hi
'; expect(processEmailContent(html)).toBe("Hi
"); }); it("returns fragment unchanged when no body tags present", () => { const fragment = "Already a fragment
"; expect(processEmailContent(fragment)).toBe("Already a fragment
"); }); it("is case-insensitive for body tag matching", () => { const html = "content
"; expect(processEmailContent(html)).toBe("content
"); }); }); describe("processEmailContent — plain text", () => { it("wraps plain text in", () => {
const text = "Hello world\nSecond line";
const result = processEmailContent(text);
expect(result).toMatch(/^ in plain text", () => {
const text = "Price < 10 & size > 5";
const result = processEmailContent(text);
expect(result).toContain("<");
expect(result).toContain(">");
expect(result).toContain("&");
expect(result).not.toContain("<10");
});
it("returns empty string for empty input", () => {
expect(processEmailContent("")).toBe("");
});
});
describe("processEmailContent — dangerous element removal", () => {
it("removes ";
const result = processEmailContent(html);
expect(result).not.toContain("