| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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)
- })
- })
|