import test from "node:test"; import assert from "node:assert/strict"; import nunjucks from "nunjucks"; import path from "node:path"; import { filters } from "../src/_filters/index.js"; const includesDir = path.resolve("src/_includes"); const markdownExcerpt = "Read the [deployment guide](/guides/deploy/) before continuing."; function renderTemplate(template, context) { const env = new nunjucks.Environment(new nunjucks.FileSystemLoader(includesDir), { autoescape: false }); for (const [name, filter] of Object.entries(filters)) { env.addFilter(name, filter); } return env.render(template, context); } test("Excerpt Markdown: renders Markdown links as safe inline HTML", () => { assert.equal( filters.renderExcerptMarkdown(markdownExcerpt), 'Read the deployment guide before continuing.' ); }); test("Excerpt Markdown: renders links in post-card previews", () => { const output = renderTemplate("partials/post-card.njk", { post: { fileSlug: "example-dispatch", url: "/dispatches/example/", date: "2026-10-06", data: { title: "Example dispatch", excerpt: markdownExcerpt, tags: ["systems"] }, templateContent: "A short article." } }); assert.match(output, /
\s*Read the deployment guide<\/a> before continuing\.\s*<\/p>/); }); test("Excerpt Markdown: renders links in featured previews and escapes raw HTML", () => { const output = renderTemplate("partials/featured-card.njk", { collections: { posts: [{ url: "/dispatches/example/", date: "2026-10-06", data: { featured: true, tags: ["systems"], title: "Example dispatch", excerpt: `${markdownExcerpt} ` }, templateContent: "" }] } }); assert.match(output, /deployment guide<\/a>/); assert.match(output, /<script>alert\('unsafe'\)<\/script>/); assert.doesNotMatch(output, /