Download packages/app/src/utils/session-export.test.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.81 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/utils/session-export.test.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/app/src/utils/session-export.test.ts
-
curl -L -o session-export.test.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/utils/session-export.test.ts
1.81 kB
| import { describe, expect, test } from "bun:test" | |
| import { fetchSessionExport, sessionExportFilename } from "./session-export" | |
| import type { Message, Part, Session } from "@opencode-ai/sdk/v2/client" | |
| describe("sessionExportFilename", () => { | |
| test("generates filename from title", () => { | |
| expect(sessionExportFilename({ id: "ses_123", title: "Clone PR in worktree from fork" })).toBe( | |
| "clone-pr-in-worktree-from-fork.json", | |
| ) | |
| }) | |
| test("generates filename from slug when title missing", () => { | |
| expect(sessionExportFilename({ id: "ses_123", slug: "my-session-slug" })).toBe("my-session-slug.json") | |
| }) | |
| test("falls back to id when title and slug are empty", () => { | |
| expect(sessionExportFilename({ id: "ses_123" })).toBe("ses_123.json") | |
| }) | |
| }) | |
| describe("fetchSessionExport", () => { | |
| test("fetches full transcript from client", async () => { | |
| const session = { id: "ses_1", title: "Test Session" } as Session | |
| const msg = { id: "msg_1", role: "user" } as Message | |
| const part = { id: "prt_1", type: "text", text: "hello" } as Part | |
| const messages = [{ info: msg, parts: [part] }] | |
| const client = { | |
| session: { | |
| get: async () => ({ data: session }), | |
| messages: async () => ({ data: messages }), | |
| }, | |
| } | |
| const result = await fetchSessionExport({ | |
| sessionID: "ses_1", | |
| client, | |
| }) | |
| expect(result).toEqual({ | |
| info: session, | |
| messages, | |
| }) | |
| }) | |
| test("throws when session not found", async () => { | |
| const client = { | |
| session: { | |
| get: async () => ({ data: null }), | |
| messages: async () => ({ data: [] }), | |
| }, | |
| } | |
| expect( | |
| fetchSessionExport({ | |
| sessionID: "ses_missing", | |
| client, | |
| }), | |
| ).rejects.toThrow("Session not found: ses_missing") | |
| }) | |
| }) | |