import { describe, expect, it } from "vitest"; import { defineToolcraft } from "../schema/define-toolcraft"; import { createToolcraftState } from "../state/create-template-state"; import { createMemoryToolcraftBinaryAssetRepository } from "./repository/memory-binary-asset-repository"; import { createToolcraftSourceAssetCoordinator } from "../composition/source-asset-coordinator"; describe("source asset presentation feedback", () => { it("publishes and clears feedback through the coordinator boundary", async () => { const state = createToolcraftState( defineToolcraft({ base: { identity: { id: "runtime-test", title: "Toolcraft App" }, canvas: { enabled: true }, panels: {}, }, modules: [], }), ); const coordinator = createToolcraftSourceAssetCoordinator({ dispatch: () => undefined, getState: () => state, repository: createMemoryToolcraftBinaryAssetRepository(), }); const feedback = { category: "resource-unavailable" as const, code: "model-presentation-unavailable", message: "The model presentation is unavailable.", }; coordinator.reportPresentationFeedback("source.model", feedback); expect( coordinator.getOperation("source.model").presentationFeedback, ).toEqual(feedback); coordinator.clearPresentationFeedback("source.model"); expect( coordinator.getOperation("source.model").presentationFeedback, ).toBeUndefined(); await coordinator.dispose(); }); });