import { expect, test } from "bun:test"; import { renderDocument, renderDocumentStream } from "../src/index.ts"; test("escapes metadata and script URLs while preserving trusted rendered body", () => { const html = renderDocument({ meta: { title: '', description: '" onload="x' }, body: "
trusted
", scripts: ['">'], }); expect(html).not.toContain(''); expect(html).toContain("</title>"); expect(html).toContain("
trusted
"); expect(html).not.toContain(""); }); test("deduplicates runtime scripts and module preloads", () => { const html = renderDocument({ meta: { title: "Page" }, body: "", scripts: ["/app.js", "/app.js"], }); expect(html.match(/rel="modulepreload"/g)).toHaveLength(1); expect(html.match(/src="\/app\.js"/g)).toHaveLength(1); }); test("always emits a document language and preserves an explicit language", () => { const fallback = renderDocument({ meta: {}, body: "" }); expect(fallback).toContain(''); const explicit = renderDocument({ meta: {}, body: "", htmlAttrs: ' data-theme="dark" lang="fr"', }); expect(explicit).toContain(''); expect(explicit).not.toContain('lang="en"'); }); test("merges framework head and scripts into an application document template", () => { const html = renderDocument({ meta: { title: "Document layout" }, body: "", htmlAttrs: ' data-theme="dark"', scripts: ["/page.js"], documentTemplate: '
Page
', }); expect(html).toStartWith(""); expect(html).toContain(''); expect(html).toContain("Document layout"); expect(html).toContain(''); expect(html).toContain(''); expect(html.match(/ { async function* body() { yield "

Shell

"; yield "

Later

"; } const html = await new Response( renderDocumentStream({ meta: { title: "Stream" }, body: body() }), ).text(); expect(html).toContain('

Shell

Later

'); }); test("renders rich script metadata and deduplicates by source", () => { const html = renderDocument({ meta: { title: "Runtime" }, body: '
', scripts: [ { src: "/__wrnexus/assets/captcha.abc.js", type: "classic", defer: true, integrity: "sha256-test", crossOrigin: "anonymous", attributes: { "data-wrnexus-runtime-src": "captcha" }, }, { src: "/__wrnexus/assets/captcha.abc.js", type: "classic" }, ], }); expect(html.match(/captcha\.abc\.js/g)).toHaveLength(1); expect(html).toContain("defer"); expect(html).toContain('integrity="sha256-test"'); expect(html).toContain('crossorigin="anonymous"'); expect(html).toContain('data-wrnexus-runtime-src="captcha"'); expect(html).not.toContain('rel="modulepreload" href="/__wrnexus/assets/captcha.abc.js"'); });