Files
racket-wiki/test/wiki-page-outline.test.mjs
T
2026-09-02 08:38:03 +02:00

31 lines
1019 B
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { headingId, markdownHeadings } from "../static/js/wiki/page-outline.js";
test("heading identifiers are readable and unique", () => {
const usedIds = new Set();
assert.equal(headingId("Résumé & planning", usedIds), "resume-planning");
assert.equal(headingId("Résumé & planning", usedIds), "resume-planning-2");
assert.equal(headingId("***", usedIds), "section");
});
test("Markdown headings retain their source line and level", () => {
const markdown = "intro\n# First\ntext\n ### Third ###\n";
assert.deepEqual(markdownHeadings(markdown), [
{ level: 1, text: "First", line: 1 },
{ level: 3, text: "Third", line: 3 }
]);
});
test("headings inside fenced code are ignored", () => {
const markdown = "# Visible\n```racket\n## Code\n```\n## Also visible";
assert.deepEqual(markdownHeadings(markdown), [
{ level: 1, text: "Visible", line: 0 },
{ level: 2, text: "Also visible", line: 4 }
]);
});