import { fireEvent, render, screen } from "@solidjs/testing-library";
import { describe, expect, it } from "vitest";
import { CommandPalette } from "../../../src/components/command-palette/index";
import { CommandPaletteRootPropsSchema, CommandPaletteMeta } from "../../../src/components/command-palette/command-palette.props";
describe("CommandPalette", () => {
it("renders input and items", () => {
render(() => (
Copy
Paste
));
expect(screen.getByPlaceholderText("Search commands...")).toBeTruthy();
expect(screen.getByText("Copy")).toBeTruthy();
expect(screen.getByText("Paste")).toBeTruthy();
});
it("renders groups with headings", () => {
render(() => (
Save
));
expect(screen.getByText("Actions")).toBeTruthy();
expect(screen.getByText("Save")).toBeTruthy();
});
it("calls onSelect when item activated", () => {
let selected = "";
render(() => (
{ selected = v; }}>
Run
));
fireEvent.click(screen.getByText("Run"));
expect(selected).toBe("run");
});
it("schema validates", () => {
expect(CommandPaletteRootPropsSchema.safeParse({ search: "test", loop: true, filter: false }).success).toBe(true);
});
it("meta has fields", () => {
expect(CommandPaletteMeta.name).toBe("CommandPalette");
expect(CommandPaletteMeta.parts).toContain("Root");
expect(CommandPaletteMeta.parts).toContain("Input");
expect(CommandPaletteMeta.parts).toContain("Item");
});
});