Files
www/test/markdown.test.js
paul 146d516f24
Deploy website / deploy (push) Successful in 24s
Refactor site generation into a modular content pipeline
2026-09-22 20:51:13 -04:00

21 lines
1.0 KiB
JavaScript

import assert from 'node:assert/strict'
import { test } from 'node:test'
import { renderMarkdownPage } from '../markdown.js'
test('a page uses matching IDs in document and TOC order, including nested duplicates', () => {
const page = renderMarkdownPage('# Title\n\n### Repeat\n\n## Repeat\n\n### Repeat\n\nA note^[with **emphasis**].\n\n```js\nconst x = 1\n```')
const ids = [...page.html.matchAll(/<h[2-6] id="([^"]+)"/g)].map((match) => match[1])
const links = [...page.toc.matchAll(/href="#([^"]+)"/g)].map((match) => match[1])
assert.deepEqual(ids, ['repeat', 'repeat-2', 'repeat-3'])
assert.deepEqual(links, ids)
assert.match(page.html, /id="sidenote-1"/)
assert.match(page.html, /<strong>emphasis<\/strong>/)
assert.match(page.html, /class="language-js"/)
assert.equal(page.excerpt, 'A note.')
})
test('sidenote numbering resets for each page', () => {
assert.match(renderMarkdownPage('# One\n\nA^[first]').html, /id="sidenote-1"/)
assert.match(renderMarkdownPage('# Two\n\nB^[second]').html, /id="sidenote-1"/)
})