Files
2026-10-25 19:35:32 +01:00

34 lines
1.8 KiB
JavaScript

import { mkdir, mkdtemp, writeFile } from 'node:fs/promises';
import os from 'node:os';
import path from 'node:path';
import sharp from 'sharp';
// Builds a small content directory in /tmp so the tests don't depend on the real content.
export async function createFixture() {
const dir = await mkdtemp(path.join(os.tmpdir(), 'site-content-'));
const write = async (file, text) => {
await mkdir(path.dirname(path.join(dir, file)), { recursive: true });
await writeFile(path.join(dir, file), text);
};
await write('site.yml', 'name: Test\npronouns:\n de: alle Pronomen\n en: any pronouns\nemail: test@example.org\n');
await write('home.yml', 'lead:\n de: Hallo\n en: Hello\nareas:\n - visual: homelab\n title: Homelab\n link: homelab\n');
await write('journey.yml', 'entries:\n - title: Live\n from: 2024\n - title: Hidden\n from: 2023\n draft: true\n');
await write('homelab.yml', 'draft: true\nservices:\n - group: Web\n items:\n - name: nginx\n');
await write('pages/journey.de.md', '---\ntitle: Werdegang\n---\nÜber mich');
await write('projects/alpha/meta.yml', 'date: 2026-05\ntags: [web]\nfeatured: true\ncover: cover.png\nvideo: https://youtu.be/dQw4w9WgXcQ\n');
await write('projects/alpha/de.md', '---\ntitle: Alpha\nsummary: Erstes Projekt\n---\nText mit Bild\n\n![Ein Bild](cover.png)\n');
await sharp({ create: { width: 1200, height: 750, channels: 3, background: '#c011d7' } })
.png()
.toFile(path.join(dir, 'projects/alpha/cover.png'));
await write('projects/beta/meta.yml', 'date: 2026-04\ntags: [video]\ndraft: true\n');
await write('projects/beta/en.md', '---\ntitle: Beta\n---\nDraft');
await write('projects/broken/meta.yml', 'tags: [oops\n');
await write('projects/broken/de.md', '---\ntitle: Kaputt\n---\n');
return dir;
}