import { describe, it, expect } from "vitest"; import { buildStyleSettings } from "@/lib/tools/style-settings"; describe("buildStyleSettings", () => { it("оборачивает в /* @settings ... */", () => { const css = buildStyleSettings({ pluginName: "My Theme", settings: [] }); expect(css.startsWith("/* @settings")).toBe(true); expect(css.trim().endsWith("*/")).toBe(true); expect(css).toContain("name: My Theme"); expect(css).toContain("id: my-theme"); }); it("variable-color добавляет format", () => { const css = buildStyleSettings({ pluginName: "T", settings: [{ id: "accent", title: "Accent", type: "variable-color", default: "#000", format: "hex" }] }); expect(css).toContain("type: variable-color"); expect(css).toContain("format: hex"); }); it("variable-select рендерит options списком", () => { const css = buildStyleSettings({ pluginName: "T", settings: [{ id: "font", title: "Font", type: "variable-select", default: "a", options: "a, b" }] }); expect(css).toContain("options:"); expect(css).toContain("- a"); expect(css).toContain("- b"); }); it("heading не получает default", () => { const css = buildStyleSettings({ pluginName: "T", settings: [{ id: "h", title: "H", type: "heading", default: "x" }] }); expect(css).not.toContain("default:"); }); it("квотит hex-дефолт цвета (иначе # = коммент YAML → null)", () => { const css = buildStyleSettings({ pluginName: "T", settings: [{ id: "accent", title: "Accent", type: "variable-color", default: "#7C3AED", format: "hex" }] }); expect(css).toContain('default: "#7C3AED"'); }); it("квотит title с двоеточием+пробелом (иначе ломает весь блок)", () => { const css = buildStyleSettings({ pluginName: "T", settings: [{ id: "s", title: "Шрифт: основной", type: "variable-text", default: "Inter" }] }); expect(css).toContain('title: "Шрифт: основной"'); }); });