import assert from "node:assert/strict"; import test from "node:test"; import { DESIGN_SYSTEM_PROJECT_SCHEMA_VERSION } from "../design-systems/_schema/manifest.schema.ts"; import type { DesignSystemProjectManifest } from "../design-systems/_schema/manifest.schema.ts"; import { evaluateDesignSystemPackageQuality } from "./check-design-system-package-quality.ts"; const baseManifest: DesignSystemProjectManifest = { schemaVersion: DESIGN_SYSTEM_PROJECT_SCHEMA_VERSION, id: "sample", name: "Sample", category: "Starter", source: { type: "bundled", origin: "test" }, files: { design: "DESIGN.md", tokens: "tokens.css", components: "components.html", }, usage: "USAGE.md", componentsManifest: "components.manifest.json", preview: { dir: "preview", pages: [ { path: "preview/colors.html", role: "colors", title: "Colors" }, { path: "preview/typography.html", role: "typography", title: "Typography" }, { path: "preview/spacing.html", role: "spacing", title: "Spacing" }, ], }, }; test("design-system package quality scores migrated rich packages", () => { const result = evaluateDesignSystemPackageQuality({ id: "sample", manifest: baseManifest, designMd: [ "# Sample", "## One", "## Two", "## Three", "## Four", "## Five", "## Six", "## Seven", ].join("\n"), tokensCss: Array.from({ length: 26 }, (_, index) => `--token-${index}: ${index}px;`).join("\n"), usageMd: ["## Read Order", "## Design Highlights", "## Do", "## Avoid"].join("\n\n"), componentsHtml: `
NewLink

Title

Subtitle

`, }); assert.equal(result.migrated, true); assert.equal(result.score, 100); assert.deepEqual(result.violations, []); }); test("design-system package quality leaves minimal manifest projects alone", () => { const result = evaluateDesignSystemPackageQuality({ id: "legacy", manifest: { schemaVersion: DESIGN_SYSTEM_PROJECT_SCHEMA_VERSION, id: "legacy", name: "Legacy", category: "Starter", source: { type: "bundled", origin: "test" }, files: { design: "DESIGN.md", tokens: "tokens.css", }, }, designMd: "# Legacy", tokensCss: "", }); assert.equal(result.migrated, false); assert.deepEqual(result.violations, []); });