import { describe, expect, test } from "bun:test" import type { GitAPI, GitStatus } from "./api/types" import { getGitStatus } from "./gitApi" const status: GitStatus = { current: "main", tracking: null, ahead: 0, behind: 0, files: [], isClean: true, } const withRuntimeGit = async (git: GitAPI, callback: () => Promise) => { const previousWindowDescriptor = Object.getOwnPropertyDescriptor(globalThis, "window") Object.defineProperty(globalThis, "window", { configurable: true, value: { __OPENCHAMBER_RUNTIME_APIS__: { git }, }, }) try { await callback() } finally { if (previousWindowDescriptor) { Object.defineProperty(globalThis, "window", previousWindowDescriptor) } else { delete (globalThis as { window?: Window }).window } } } describe("getGitStatus", () => { test("forwards light-mode options to runtime git APIs", async () => { let received: { directory: string; options?: { mode?: "light" } } | null = null const runtimeGit = { getGitStatus: async (directory: string, options?: { mode?: "light" }) => { received = { directory, options } return status }, } as Partial as GitAPI await withRuntimeGit(runtimeGit, async () => { await getGitStatus("/repo", { mode: "light" }) }) expect(received).toEqual({ directory: "/repo", options: { mode: "light" } }) }) })