import { renderToStaticMarkup } from "react-dom/server"; import { ProviderDriverKind } from "@t3tools/contracts"; import { describe, expect, it } from "vite-plus/test"; import { ComposerCommandMenu } from "./ComposerCommandMenu"; describe("ComposerCommandMenu", () => { it("renders slash-command results as an attached composer drawer", () => { const markup = renderToStaticMarkup( {}} onSelect={() => {}} />, ); expect(markup).toContain('data-composer-command-drawer="true"'); expect(markup).toContain("chat-composer-drawer-surface"); expect(markup).toContain("chat-composer-drawer-attached"); expect(markup).not.toContain("dropdown-glass"); }); it("renders commands without a category heading or invented icons", () => { const markup = renderToStaticMarkup( {}} onSelect={() => {}} />, ); expect(markup).toContain("/model"); expect(markup).toContain("Switch response model for this thread"); expect(markup).not.toContain("Built-in"); expect(markup).not.toContain(" { const markup = renderToStaticMarkup( {}} onSelect={() => {}} />, ); expect(markup).toContain("Browser"); expect(markup).toContain('data-slot="badge"'); expect(markup).toContain(">App Skill"); expect(markup).toContain("Open and control the in-app browser"); expect(markup).toContain("max-w-[48ch]"); expect(markup).toContain("text-secondary-label text-xs"); expect(markup).toContain("ms-auto"); expect(markup).toContain("text-current"); expect(markup.indexOf("Open and control the in-app browser")).toBeLessThan( markup.indexOf(">App Skill"), ); expect(markup).toContain(" { const markup = renderToStaticMarkup( {}} onSelect={() => {}} />, ); expect(markup).toContain('/skill:Ask Matt'); expect(markup).toContain('data-slot="badge"'); expect(markup).toContain("lucide-folder"); expect(markup).toContain(">Repo"); expect(markup).toContain("Find the right skill or workflow"); expect(markup).not.toContain("font-medium text-secondary-label"); }); });