70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import type { ConfigInvalidError } from "./server-errors"
|
|
import { formatServerError, parseReabaleConfigInvalidError } from "./server-errors"
|
|
|
|
describe("parseReabaleConfigInvalidError", () => {
|
|
test("formats issues with file path", () => {
|
|
const error = {
|
|
name: "ConfigInvalidError",
|
|
data: {
|
|
path: "opencode.config.ts",
|
|
issues: [
|
|
{ path: ["settings", "host"], message: "Required" },
|
|
{ path: ["mode"], message: "Invalid" },
|
|
],
|
|
},
|
|
} satisfies ConfigInvalidError
|
|
|
|
const result = parseReabaleConfigInvalidError(error)
|
|
|
|
expect(result).toBe(
|
|
["Invalid configuration", "opencode.config.ts", "settings.host: Required", "mode: Invalid"].join("\n"),
|
|
)
|
|
})
|
|
|
|
test("uses trimmed message when issues are missing", () => {
|
|
const error = {
|
|
name: "ConfigInvalidError",
|
|
data: {
|
|
path: "config",
|
|
message: " Bad value ",
|
|
},
|
|
} satisfies ConfigInvalidError
|
|
|
|
const result = parseReabaleConfigInvalidError(error)
|
|
|
|
expect(result).toBe(["Invalid configuration", "Bad value"].join("\n"))
|
|
})
|
|
})
|
|
|
|
describe("formatServerError", () => {
|
|
test("formats config invalid errors", () => {
|
|
const error = {
|
|
name: "ConfigInvalidError",
|
|
data: {
|
|
message: "Missing host",
|
|
},
|
|
} satisfies ConfigInvalidError
|
|
|
|
const result = formatServerError(error)
|
|
|
|
expect(result).toBe(["Invalid configuration", "Missing host"].join("\n"))
|
|
})
|
|
|
|
test("returns error messages", () => {
|
|
expect(formatServerError(new Error("Request failed with status 503"))).toBe("Request failed with status 503")
|
|
})
|
|
|
|
test("returns provided string errors", () => {
|
|
expect(formatServerError("Failed to connect to server")).toBe("Failed to connect to server")
|
|
})
|
|
|
|
test("falls back to unknown", () => {
|
|
expect(formatServerError(0)).toBe("Unknown error")
|
|
})
|
|
|
|
test("falls back for unknown error objects and names", () => {
|
|
expect(formatServerError({ name: "ServerTimeoutError", data: { seconds: 30 } })).toBe("Unknown error")
|
|
})
|
|
})
|