mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-10-28 23:57:17 +09:00
109 lines
2.2 KiB
TypeScript
109 lines
2.2 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
import {
|
|
buildDocTitles,
|
|
buildDocSections,
|
|
stripDocMeta,
|
|
} from "./markdown-docs";
|
|
|
|
describe("markdown docs metadata extraction", () => {
|
|
test("builds directive-marked doc sections", () => {
|
|
const docs = {
|
|
"manual-api": `# API
|
|
|
|
::doc-section{field="safetyRules"}
|
|
|
|
Rules:
|
|
|
|
- API rule.
|
|
|
|
::doc-section{field="safetyRules"}
|
|
|
|
## Safety Rules
|
|
|
|
- Safety rule.`,
|
|
"manual-llm": `# LLM
|
|
|
|
::doc-section{field="implementationProcess"}
|
|
|
|
## LLM Implementation Process
|
|
|
|
1. Discover.
|
|
|
|
::doc-section{field="visualDesignWorkflow"}
|
|
|
|
## Visual Design Workflow
|
|
|
|
- Verify visually.
|
|
|
|
::doc-section{field="generatedFileGuardrails"}
|
|
|
|
## Generated Files Guardrails
|
|
|
|
- Avoid generated files.
|
|
|
|
::doc-section{field="rules"}
|
|
|
|
## Rules
|
|
|
|
- LLM rule.`,
|
|
"manual-mcp": `# MCP
|
|
|
|
::doc-section{field="rules"}
|
|
|
|
## Core Rules
|
|
|
|
- MCP rule.`,
|
|
};
|
|
|
|
expect(buildDocSections(docs)).toEqual({
|
|
"manual-api": {
|
|
safetyRules: ["API rule.", "Safety rule."],
|
|
},
|
|
"manual-llm": {
|
|
implementationProcess: ["Discover."],
|
|
visualDesignWorkflow: ["Verify visually."],
|
|
generatedFileGuardrails: ["Avoid generated files."],
|
|
rules: ["LLM rule."],
|
|
},
|
|
"manual-mcp": {
|
|
rules: ["MCP rule."],
|
|
},
|
|
});
|
|
});
|
|
|
|
test("builds titles and strips generation-only directives", () => {
|
|
const docs = {
|
|
"manual-api": `# API
|
|
|
|
::doc-section{field="safetyRules"}
|
|
|
|
## Safety Rules
|
|
|
|
- Safety rule.`,
|
|
};
|
|
|
|
expect(buildDocTitles(docs)).toEqual({
|
|
"manual-api": "API",
|
|
});
|
|
expect(stripDocMeta(docs["manual-api"])).not.toContain("doc-section");
|
|
expect(stripDocMeta(docs["manual-api"])).toContain(
|
|
"# API\n\n## Safety Rules"
|
|
);
|
|
});
|
|
|
|
test("fails on empty directive-marked lists", () => {
|
|
expect(() =>
|
|
buildDocSections({
|
|
"manual-mcp":
|
|
'# MCP\n\n::doc-section{field="rules"}\n\n## Core Rules\n\nOnly prose.',
|
|
})
|
|
).toThrow("Missing generated doc section manual-mcp:rules");
|
|
|
|
expect(() =>
|
|
buildDocSections({
|
|
"manual-mcp": "# MCP\n\n## Core Rules\n\n- Rule.",
|
|
})
|
|
).toThrow("Missing generated doc sections manual-mcp");
|
|
});
|
|
});
|