import { describe, it, expect } from "vitest"; import { handleInspect } from "../../src/tools/inspect.js"; import { ComponentRegistry } from "../../src/registry.js"; describe("pettyui.inspect", () => { const registry = new ComponentRegistry(); it("returns full component info", () => { const result = handleInspect(registry, { component: "Dialog" }); expect(result).not.toBeNull(); expect(result?.name).toBe("Dialog"); expect(result?.parts).toContain("Root"); expect(result?.parts).toContain("Content"); expect(result?.exportPath).toBe("pettyui/dialog"); expect(typeof result?.description).toBe("string"); expect(result?.description.length).toBeGreaterThan(0); }); it("includes JSON schema for props", () => { const result = handleInspect(registry, { component: "Dialog" }); expect(result).not.toBeNull(); expect(result?.props).toBeDefined(); const dialogRoot = result?.props["dialogRoot"] as { type?: string } | undefined; expect(dialogRoot).toBeDefined(); expect(dialogRoot?.type).toBe("object"); }); it("includes minimal example", () => { const result = handleInspect(registry, { component: "Dialog" }); expect(result).not.toBeNull(); expect(result?.example).toContain("Dialog"); expect(result?.example).toContain('from "pettyui/dialog"'); }); it("returns null for unknown component", () => { const result = handleInspect(registry, { component: "FakeComponent" }); expect(result).toBeNull(); }); it("is case-insensitive", () => { const result = handleInspect(registry, { component: "dialog" }); expect(result).not.toBeNull(); expect(result?.name).toBe("Dialog"); }); });