From 7225bc847e51d382f2396a2432260170f1585956 Mon Sep 17 00:00:00 2001
From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com>
Date: Thu, 10 Jul 2025 11:39:31 -0400
Subject: [PATCH] test: ensure markdown renders to HTML
---
__tests__/renderMarkdown.test.js | 75 ++++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)
create mode 100644 __tests__/renderMarkdown.test.js
diff --git a/__tests__/renderMarkdown.test.js b/__tests__/renderMarkdown.test.js
new file mode 100644
index 0000000..2f8d5b0
--- /dev/null
+++ b/__tests__/renderMarkdown.test.js
@@ -0,0 +1,75 @@
+jest.mock('@11ty/eleventy', () => {
+ const fs = require('fs');
+ const path = require('path');
+ return class Eleventy {
+ constructor(input, output) {
+ this.input = input;
+ this.output = output;
+ }
+ setConfig() {}
+ async write() {
+ const walk = d => {
+ const entries = fs.readdirSync(d, { withFileTypes: true });
+ let files = [];
+ for (const e of entries) {
+ const p = path.join(d, e.name);
+ if (e.isDirectory()) files = files.concat(walk(p));
+ else if (p.endsWith('.md')) files.push(p);
+ }
+ return files;
+ };
+ for (const file of walk(this.input)) {
+ const rel = path.relative(this.input, file).replace(/\.md$/, '.html');
+ const dest = path.join(this.output, rel);
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
+ fs.writeFileSync(dest, '');
+ }
+ }
+ };
+});
+
+const fs = require('fs');
+const path = require('path');
+const os = require('os');
+const { generate } = require('../src/generator');
+
+function getPaths(tree) {
+ const paths = [];
+ for (const node of tree) {
+ if (node.path) paths.push(node.path);
+ if (node.children) paths.push(...getPaths(node.children));
+ }
+ return paths;
+}
+
+test('markdown files render with layout and appear in nav/search', async () => {
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'df-test-'));
+ const contentDir = path.join(tmp, 'content');
+ const outputDir = path.join(tmp, '_site');
+ fs.mkdirSync(path.join(contentDir, 'guide'), { recursive: true });
+ fs.writeFileSync(path.join(contentDir, 'index.md'), '# Home\nWelcome');
+ fs.writeFileSync(path.join(contentDir, 'guide', 'install.md'), '# Install\nSteps');
+ const configPath = path.join(tmp, 'config.yaml');
+ fs.writeFileSync(configPath, 'site:\n title: Test\n');
+
+ await generate({ contentDir, outputDir, configPath });
+
+ const indexHtml = fs.readFileSync(path.join(outputDir, 'index.html'), 'utf8');
+ const installHtml = fs.readFileSync(path.join(outputDir, 'guide', 'install.html'), 'utf8');
+ expect(indexHtml).toContain('