Files
kicad-mcp-server/tests-ts/tool-response.test.ts

46 lines
1.7 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { formatKicadResult } from "../src/tools/tool-response.js";
describe("formatKicadResult", () => {
it("wraps a successful object result as JSON text content", () => {
const response = formatKicadResult({ success: true, value: 42 });
expect(response.content).toEqual([
{ type: "text", text: JSON.stringify({ success: true, value: 42 }) },
]);
expect(response.isError).toBeUndefined();
});
it("flags isError when the KiCAD payload reports success=false", () => {
const response = formatKicadResult({ success: false, error: "boom" });
expect(response.isError).toBe(true);
expect(response.content[0].text).toBe(JSON.stringify({ success: false, error: "boom" }));
});
it("does not flag isError for payloads without a success field", () => {
const response = formatKicadResult({ data: [1, 2, 3] });
expect(response.isError).toBeUndefined();
});
it("does not flag isError for success=true", () => {
const response = formatKicadResult({ success: true });
expect(response.isError).toBeUndefined();
});
it("does not flag isError when success is a truthy non-false value", () => {
const response = formatKicadResult({ success: "ok" });
expect(response.isError).toBeUndefined();
});
it("handles string results", () => {
const response = formatKicadResult("hello");
expect(response.content[0].text).toBe(JSON.stringify("hello"));
expect(response.isError).toBeUndefined();
});
it("handles null without throwing", () => {
const response = formatKicadResult(null);
expect(response.content[0].type).toBe("text");
expect(response.isError).toBeUndefined();
});
});