Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/lukebennett88/luke-ui. ui.lukebennett.dev
Something went wrong. Try again.
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';import { tmpdir } from 'node:os';import { resolve } from 'node:path';import { expect, test } from 'vite-plus/test';import { generateComponentsIndex } from '../../scripts/generate-components-index.js';
test('excludes a topical page with no source frontmatter from the index', () => { const scratchDir = mkdtempSync(resolve(tmpdir(), 'components-index-'));
try { writeFileSync( resolve(scratchDir, 'meta.json'), JSON.stringify({ pages: ['actions/button', 'forms/topic'] }), );
mkdirSync(resolve(scratchDir, 'actions'), { recursive: true }); writeFileSync( resolve(scratchDir, 'actions/button.mdx'), `---title: Buttondescription: A labelled control for actions in an interface.source: packages/example/src/button---
Body.`, );
mkdirSync(resolve(scratchDir, 'forms'), { recursive: true }); writeFileSync( resolve(scratchDir, 'forms/topic.mdx'), `---title: Topicdescription: A topical page with no source.---
Body.`, );
const generated = generateComponentsIndex(scratchDir);
expect(generated).toContain("url: '/components/actions/button'"); expect(generated).toContain("name: 'Button'"); expect(generated).not.toContain('/components/forms/topic'); expect(generated).not.toContain("name: 'Topic'"); } finally { rmSync(scratchDir, { force: true, recursive: true }); }});
test('excludes empty groups created by sidebar separators', () => { const scratchDir = mkdtempSync(resolve(tmpdir(), 'components-index-'));
try { writeFileSync( resolve(scratchDir, 'meta.json'), JSON.stringify({ pages: ['---Overview---', 'index', '---Actions---', 'actions/button'], }), );
writeFileSync( resolve(scratchDir, 'index.mdx'), `---title: Componentsdescription: Component guides and examples.---
Body.`, );
mkdirSync(resolve(scratchDir, 'actions'), { recursive: true }); writeFileSync( resolve(scratchDir, 'actions/button.mdx'), `---title: Buttondescription: A labelled control for actions in an interface.source: packages/example/src/button---
Body.`, );
const generated = generateComponentsIndex(scratchDir);
expect(generated).not.toContain("title: 'Overview'"); expect(generated).toContain("title: 'Actions'"); expect(generated).toContain("url: '/components/actions/button'"); } finally { rmSync(scratchDir, { force: true, recursive: true }); }});