30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { handleDiscover } from "../../src/tools/discover.js";
|
|
import { ComponentRegistry } from "../../src/registry.js";
|
|
|
|
describe("pettyui.discover", () => {
|
|
const registry = new ComponentRegistry();
|
|
|
|
it("finds components matching intent — modal overlay → Dialog first", () => {
|
|
const results = handleDiscover(registry, { intent: "modal overlay" });
|
|
expect(results.length).toBeGreaterThan(0);
|
|
expect(results[0].name).toBe("Dialog");
|
|
});
|
|
|
|
it("returns multiple ranked matches — select option includes Select", () => {
|
|
const results = handleDiscover(registry, { intent: "select option" });
|
|
const names = results.map((r) => r.name);
|
|
expect(names).toContain("Select");
|
|
});
|
|
|
|
it("returns empty for no matches — xyznonexistent → []", () => {
|
|
const results = handleDiscover(registry, { intent: "xyznonexistent" });
|
|
expect(results).toEqual([]);
|
|
});
|
|
|
|
it("limits results with maxResults: 3", () => {
|
|
const results = handleDiscover(registry, { intent: "a", maxResults: 3 });
|
|
expect(results.length).toBeLessThanOrEqual(3);
|
|
});
|
|
});
|