Skip to main content
Glama
scriptResultFormatter.test.ts5.32 kB
import { describe, expect, it } from "vitest"; import { formatScriptResult, type ScriptResultData, } from "../../../src/features/tools/presenter/scriptResultFormatter.js"; describe("scriptResultFormatter", () => { describe("formatScriptResult", () => { it("should format successful execution with simple result in minimal mode", () => { const data: ScriptResultData = { data: { result: 42, }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "minimal", }); expect(result).toContain("Return type: number"); expect(result).toContain("42"); }); it("should format successful execution with no result in minimal mode", () => { const data: ScriptResultData = { data: { result: undefined, }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "minimal", }); expect(result).toContain("Return type: none"); }); it("should format array result in minimal mode", () => { const data: ScriptResultData = { data: { result: [1, 2, 3, 4, 5], }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "minimal", }); expect(result).toContain("Return type: array(5)"); expect(result).toContain("1"); }); it("should format object result in minimal mode", () => { const data: ScriptResultData = { data: { result: { baz: 123, foo: "bar" }, }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "minimal", }); expect(result).toContain("Return type: object"); expect(result).toContain("foo"); }); it("should format successful execution with result and output in summary mode", () => { const data: ScriptResultData = { data: { output: "Debug message", result: { value: 123 }, }, success: true, }; const script = "op('/project1').par.value"; const result = formatScriptResult(data, script, { detailLevel: "summary", }); expect(result).toContain("Script Result"); expect(result).toContain("Snippet: `op('/project1').par.value`"); expect(result).toContain("Return type: object"); expect(result).toContain('"value": 123'); expect(result).toContain("Debug message"); }); it("should truncate long script snippets in summary mode", () => { const data: ScriptResultData = { data: { result: "ok", }, success: true, }; const longScript = "a".repeat(150); const result = formatScriptResult(data, longScript, { detailLevel: "summary", }); expect(result).toContain(`Snippet: \`${"a".repeat(100)}...\``); }); it("should truncate long output in summary mode", () => { const data: ScriptResultData = { data: { output: "x".repeat(250), result: "ok", }, success: true, }; const result = formatScriptResult(data, "script", { detailLevel: "summary", }); expect(result).toContain("Output type: string"); expect(result).toContain(`${"x".repeat(200)}...`); }); it("should truncate large results in summary mode", () => { const largeResult = { data: "y".repeat(600) }; const data: ScriptResultData = { data: { result: largeResult, }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "summary", }); expect(result).toContain("Result truncated"); expect(result).toContain("Use detailLevel='detailed' for full output"); }); it("should format error result", () => { const data: ScriptResultData = { data: { error: "NameError: name 'foo' is not defined", }, success: false, }; const script = "print(foo)"; const result = formatScriptResult(data, script); expect(result).toContain("❌ Script execution failed"); expect(result).toContain("Script: print(foo)"); expect(result).toContain("Error: NameError: name 'foo' is not defined"); }); it("should return full JSON in detailed mode", () => { const data: ScriptResultData = { data: { output: "Some output", result: { complex: "data", nested: { value: 123 } }, }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "detailed", responseFormat: "json", }); expect(result).toContain('"success": true'); expect(result).toContain('"complex": "data"'); expect(result).toContain('"nested"'); expect(result).toContain('"output": "Some output"'); }); it("should handle undefined data", () => { const result = formatScriptResult(undefined); expect(result).toBe("No result returned."); }); it("should handle empty output string", () => { const data: ScriptResultData = { data: { output: "", result: "ok", }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "summary", }); expect(result).not.toContain("Output:"); }); it("should handle whitespace-only output", () => { const data: ScriptResultData = { data: { output: " \n\t ", result: "ok", }, success: true, }; const result = formatScriptResult(data, undefined, { detailLevel: "summary", }); expect(result).not.toContain("Output:"); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/8beeeaaat/touchdesigner-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server