import { describe, expect, it } from "vitest"; import { defineToolcraft } from "./define-toolcraft"; import { imageExportModule } from "../modules/built-ins/image-export/image-export-module"; import { svgExportModule } from "../modules/built-ins/svg-export/svg-export-module"; const base = { identity: { id: "still-export-test", title: "Still export" }, canvas: { enabled: true }, panels: { controls: { sections: [], title: "Controls" } }, }; describe("still export module composition", () => { it("offers SVG only when its module is enabled and gates raster resolution", () => { const schema = defineToolcraft({ base, modules: [imageExportModule(), svgExportModule()] }); const controls = schema.panels.controls!.sections.find(({ id }) => id === "runtime.image-export")!.controls; expect(controls.imageFormat!.options?.map(({ value }) => value)).toEqual(["png", "jpg", "svg"]); expect(controls.imageResolution!.applicability).toEqual({ mode: "conditional", origin: "explicit", all: [{ target: "export.image.format", oneOf: ["png", "jpg"] }], }); expect(controls.imageResolution!.defaultValue).toBe("4k"); const raster = defineToolcraft({ base, modules: [imageExportModule()] }); const rasterControls = raster.panels.controls!.sections.find(({ id }) => id === "runtime.image-export")!.controls; expect(rasterControls.imageFormat!.options?.map(({ value }) => value)).toEqual(["png", "jpg"]); expect(rasterControls.imageResolution!.applicability).toEqual({ mode: "always", origin: "explicit" }); }); it("keeps SVG-only products free of raster settings", () => { const schema = defineToolcraft({ base, modules: [svgExportModule()] }); expect(schema.panels.controls!.sections.some(({ id }) => id === "runtime.image-export")).toBe(false); }); });