import { describe, expect, test } from "bun:test";
import { isReconnectableMcpError, parseMcpToolContent } from "./mcp-tool-client.ts";

describe("parseMcpToolContent", () => {
  test("parses single text JSON content", () => {
    expect(
      parseMcpToolContent([
        { type: "text", text: "{\"ok\":true,\"count\":2}" },
      ]),
    ).toEqual({ ok: true, count: 2 });
  });

  test("returns plain text when content is not JSON", () => {
    expect(parseMcpToolContent([{ type: "text", text: "hello" }])).toBe("hello");
  });
});

describe("isReconnectableMcpError", () => {
  test("retries only transport-shaped failures", () => {
    expect(isReconnectableMcpError(new Error("transport closed"))).toBe(true);
    expect(isReconnectableMcpError(new Error("tool returned validation error"))).toBe(false);
  });
});
