21 lines
834 B
TypeScript
21 lines
834 B
TypeScript
import { expect, test } from "bun:test";
|
|
import { renderRichText, richTextSchema } from "../src/rich-text.ts";
|
|
|
|
test("semantic text is escaped, bounded, and rejects arbitrary markup properties", () => {
|
|
expect(
|
|
renderRichText({
|
|
text: "<hello>\nworld",
|
|
richText: [
|
|
{ text: "<hello>", bold: true },
|
|
{ text: "\nworld", italic: true, underline: true },
|
|
],
|
|
}),
|
|
).toBe("<strong><hello></strong><em><u><br />world</u></em>");
|
|
expect(richTextSchema.parse([{ text: "hello", html: "<script>" }]).ok).toBe(false);
|
|
expect(richTextSchema.parse([{ text: "hello", bold: "yes" }]).ok).toBe(false);
|
|
expect(richTextSchema.parse([{ text: "a".repeat(200001) }]).ok).toBe(false);
|
|
expect(renderRichText({ text: "Changed", richText: [{ text: "Old", bold: true }] })).toBe(
|
|
"Changed",
|
|
);
|
|
});
|