import { describe, expect, it } from "vitest"; import { defineToolcraft } from "./define-toolcraft"; describe("defineToolcraft runtime setup canvas controls", () => { it("prepends canvas size controls to controls panels", () => { const app = defineToolcraft({ base: { identity: { id: "runtime-test", title: "Toolcraft App" }, canvas: { enabled: true, size: { height: 900, unit: "px", width: 1440 }, sizing: { mode: "editable-output" }, }, panels: { controls: { sections: [ { id: "test-section-1", controls: { prompt: { applicability: { mode: "always" as const }, target: "generation.prompt", type: "text", }, }, title: "Generation", }, ], title: "Controls", }, }, }, modules: [], }); const [, canvasSection, generationSection] = app.panels.controls?.sections ?? []; expect(canvasSection?.title).toBe("Settings"); expect(canvasSection?.controls.infinityCanvas).toMatchObject({ applicability: { mode: "always", origin: "explicit" }, defaultValue: false, label: "Infinity canvas", target: "canvas.infinity", type: "switch", }); expect(canvasSection?.controls.infinityCanvas).not.toHaveProperty( "disabledWhen", ); expect(canvasSection?.controls.infinityCanvas).not.toHaveProperty( "description", ); expect(canvasSection?.controls.canvasAspectRatio).toMatchObject({ defaultValue: { height: 5, mode: "custom", value: "8:5", width: 8, }, label: "Aspect ratio", performanceRole: "workload", target: "canvas.aspectRatio", type: "aspectRatio", applicability: { all: [{ equals: false, target: "canvas.infinity" }], mode: "conditional", origin: "explicit", }, }); expect(canvasSection?.controls.canvasWidth).toMatchObject({ defaultValue: 1440, label: "Canvas width", performanceRole: "workload", target: "canvas.size.width", type: "text", applicability: { all: [{ equals: false, target: "canvas.infinity" }], mode: "conditional", origin: "explicit", }, }); expect(canvasSection?.controls.canvasHeight).toMatchObject({ defaultValue: 900, label: "Canvas height", performanceRole: "workload", target: "canvas.size.height", type: "text", applicability: { all: [{ equals: false, target: "canvas.infinity" }], mode: "conditional", origin: "explicit", }, }); expect(canvasSection?.layoutGroups).toEqual([ { columns: 2, controls: ["canvasWidth", "canvasHeight"], layout: "inline", }, ]); expect(generationSection?.title).toBe("Generation"); }); it("publishes an app-selected Infinity canvas default", () => { const app = defineToolcraft({ base: { identity: { id: "runtime-test", title: "Toolcraft App" }, canvas: { enabled: true, size: { height: 900, unit: "px", width: 1440 }, sizing: { defaultMode: "infinite", mode: "editable-output", }, }, panels: { controls: { sections: [], title: "Controls", }, }, }, modules: [], }); expect( app.panels.controls?.sections[1]?.controls.infinityCanvas, ).toMatchObject({ applicability: { mode: "always" as const }, defaultValue: true, target: "canvas.infinity", type: "switch", }); }); });