import { describe, expect, it } from "vitest"; import { TOOLCRAFT_BUILT_IN_CONTROL_TYPES } from "../../../contracts/component-contracts"; import { getToolcraftControlRendererKind, getToolcraftControlRendererStateDependencies, TOOLCRAFT_CONTROL_RENDERER_REGISTRY, TOOLCRAFT_CONTROL_RENDERER_STATE_DEPENDENCIES, } from "./controls-panel-renderer-registry"; describe("Toolcraft controls-panel renderer registry", () => { it("covers every built-in control exactly once", () => { expect(Object.keys(TOOLCRAFT_CONTROL_RENDERER_REGISTRY).sort()).toEqual( [...TOOLCRAFT_BUILT_IN_CONTROL_TYPES].sort(), ); for (const controlType of TOOLCRAFT_BUILT_IN_CONTROL_TYPES) { expect(getToolcraftControlRendererKind(controlType)).not.toBeNull(); } }); it("leaves product-specific control ids to custom renderers", () => { expect(getToolcraftControlRendererKind("productMaskEditor")).toBeNull(); }); it("declares state dependencies for every built-in renderer family", () => { const expectedDependencies = { action: [], basic: ["value"], "canvas-handle": [], collection: ["value"], compound: ["value"], media: ["canvas.size", "mediaAssets", "value"], settings: [], } as const; expect(TOOLCRAFT_CONTROL_RENDERER_STATE_DEPENDENCIES).toEqual( expectedDependencies, ); for (const controlType of TOOLCRAFT_BUILT_IN_CONTROL_TYPES) { const rendererKind = TOOLCRAFT_CONTROL_RENDERER_REGISTRY[controlType]; expect(getToolcraftControlRendererStateDependencies(controlType)).toEqual( expectedDependencies[rendererKind], ); } }); });