import { describe, expect, test } from "bun:test" import { initializationData, initializationReady } from "./initialization" describe("desktop renderer initialization", () => { test("throws the original initialization error before rendering server providers", () => { const error = new Error("sidecar startup failed") try { initializationData(Object.assign(() => undefined, { error })) throw new Error("expected initialization to fail") } catch (failure) { expect(failure).toBe(error) expect((failure as Error & { localServerStartup?: boolean }).localServerStartup).toBe(true) } }) test("removes Electron's remote invocation wrapper from startup errors", () => { const error = new Error( "Error invoking remote method 'await-initialization': Error: Cannot migrate session_message projections", ) try { initializationData(Object.assign(() => undefined, { error })) throw new Error("expected initialization to fail") } catch (failure) { expect(failure).toBe(error) expect((failure as Error).message).toBe("Cannot migrate session_message projections") } }) test("returns initialized sidecar data", () => { const sidecar = { url: "http://127.0.0.1:1234", username: "opencode", password: "secret" } expect(initializationData(Object.assign(() => sidecar, { error: undefined }))).toBe(sidecar) }) test("does not discard falsy initialization errors", () => { let caught: unknown try { initializationData(Object.assign(() => undefined, { error: "" })) } catch (error) { caught = error } expect(caught).toBeInstanceOf(Error) if (!(caught instanceof Error)) return expect(caught.message).toBe("") expect((caught as Error & { localServerStartup?: boolean }).localServerStartup).toBe(true) }) test("checks initialization errors before rendering server providers", () => { const error = new Error("sidecar startup failed") expect(() => initializationReady(Object.assign(() => undefined, { error, loading: false }))).toThrow(error) }) test("waits for pending initialization without reading it", () => { let reads = 0 expect( initializationReady( Object.assign( () => { reads++ return undefined }, { error: undefined, loading: true }, ), ), ).toBe(false) expect(reads).toBe(0) }) })