Download packages/app/test-browser/command-palette.test.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 2.74 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/test-browser/command-palette.test.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/app/test-browser/command-palette.test.ts
-
curl -L -o command-palette.test.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/test-browser/command-palette.test.ts
2.74 kB
| import { describe, expect, test } from "bun:test" | |
| import type { Project } from "@opencode-ai/sdk/v2/client" | |
| import type { SessionInfo } from "@opencode-ai/client/promise" | |
| import { createRoot } from "solid-js" | |
| import { createServerSessionEntries } from "@/components/command-palette" | |
| import type { LocalProject } from "@/context/layout" | |
| import { ServerConnection } from "@/context/server" | |
| import { getProjectAvatarSource } from "@/pages/layout/helpers" | |
| const stored: Project = { | |
| id: "project-1", | |
| name: "Palette project", | |
| worktree: "/workspace/project", | |
| sandboxes: [], | |
| time: { created: 1, updated: 1 }, | |
| } | |
| const session: SessionInfo = { | |
| id: "session-1", | |
| projectID: stored.id, | |
| agent: "build", | |
| model: { id: "model-1", providerID: "provider-1" }, | |
| cost: 0, | |
| tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } }, | |
| location: { directory: stored.worktree }, | |
| title: "Palette session", | |
| time: { created: 1, updated: 2 }, | |
| } | |
| describe("command palette sessions", () => { | |
| test("uses the home project avatar and cancels superseded searches", async () => { | |
| const server = ServerConnection.Key.make("selected-server") | |
| const opened: LocalProject = { | |
| ...stored, | |
| icon: { override: "home-project-avatar" }, | |
| expanded: true, | |
| } | |
| const searches: string[] = [] | |
| const result = await new Promise<Awaited<ReturnType<ReturnType<typeof createServerSessionEntries>>>>( | |
| (resolve, reject) => { | |
| createRoot((dispose) => { | |
| const search = createServerSessionEntries({ | |
| server, | |
| opened: () => [opened], | |
| stored: () => [{ ...stored, icon: { url: "stored-project-avatar" } }], | |
| load: async (text) => { | |
| searches.push(text) | |
| return { | |
| data: [session, { ...session, id: "archived-session", time: { ...session.time, archived: 3 } }], | |
| } | |
| }, | |
| untitled: () => "Untitled", | |
| category: () => "Sessions", | |
| }) | |
| const first = search("palette") | |
| const second = search("palette session") | |
| Promise.all([first, second]) | |
| .then(([cancelled, entries]) => { | |
| expect(cancelled).toEqual([]) | |
| resolve(entries) | |
| }) | |
| .catch(reject) | |
| .finally(dispose) | |
| }) | |
| }, | |
| ) | |
| expect(searches).toEqual(["palette session"]) | |
| expect(result).toHaveLength(1) | |
| expect(getProjectAvatarSource(result[0]?.project?.id, result[0]?.project?.icon)).toBe("home-project-avatar") | |
| expect(result[0]).toMatchObject({ | |
| server, | |
| sessionID: session.id, | |
| description: stored.name, | |
| project: { id: stored.id, icon: opened.icon }, | |
| }) | |
| }) | |
| }) | |