import { describe, it, expect } from "vitest"; import { createManifest, defineWidget, validateManifest, REQUIRED_MANIFEST_FIELDS } from "../src"; const baseManifest = { id: "test-plugin", name: "Test Plugin", version: "1.0.0", nexadashPluginApi: "1.0", }; describe("plugin-sdk manifest", () => { it("createManifest applies defaults", () => { const manifest = createManifest(baseManifest); expect(manifest.name).toBe("Test Plugin"); expect(manifest.nexadashPluginApi).toBe("1.0"); expect(manifest.widgets).toEqual([]); expect(manifest.hasFrontend).toBe(false); }); it("defineWidget applies defaults", () => { const widget = defineWidget({ id: "test-widget", name: "Test Widget", }); expect(widget.defaultWidth).toBe(2); expect(widget.defaultHeight).toBe(2); }); it("validateManifest validates required fields", () => { const result = validateManifest(createManifest(baseManifest)); expect(result.valid).toBe(true); }); it("validateManifest rejects invalid ids", () => { const result = validateManifest( createManifest({ ...baseManifest, id: "Test Plugin", }) ); expect(result.valid).toBe(false); }); }); describe("REQUIRED_MANIFEST_FIELDS", () => { it("contains required keys", () => { expect(REQUIRED_MANIFEST_FIELDS).toContain("id"); expect(REQUIRED_MANIFEST_FIELDS).toContain("name"); expect(REQUIRED_MANIFEST_FIELDS).toContain("version"); }); });