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({ canvas: { enabled: true, size: { height: 900, unit: "px", width: 1440 }, sizing: { mode: "editable-output" }, }, panels: { controls: { sections: [ { controls: { prompt: { target: "generation.prompt", type: "text", }, }, title: "Generation", }, ], title: "Controls", }, }, }); const [canvasSection, generationSection] = app.panels.controls?.sections ?? []; expect(canvasSection?.title).toBe("Setup"); 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({ canvas: { enabled: true, size: { height: 900, unit: "px", width: 1440 }, sizing: { defaultMode: "infinite", mode: "editable-output", }, }, panels: { controls: { sections: [], title: "Controls", }, }, }); expect(app.panels.controls?.sections[0]?.controls.infinityCanvas).toMatchObject({ defaultValue: true, target: "canvas.infinity", type: "switch", }); }); });