Skip to main content
Glama

@arizeai/phoenix-mcp

Official
by Arize-ai
applyTemplate.test.ts4.58 kB
import { formatTemplate } from "../../src/template/applyTemplate"; import { describe, expect, it } from "vitest"; describe("formatTemplate", () => { it("should render template with multiple variables", () => { const result = formatTemplate({ template: "Hello {{name}}, you are {{age}} years old from {{city}}.", variables: { name: "Alice", age: 30, city: "New York" }, }); expect(result).toBe("Hello Alice, you are 30 years old from New York."); }); it("should handle nested object variables", () => { const result = formatTemplate({ template: "Hello {{user.name}}, your email is {{user.email}}.", variables: { user: { name: "Bob", email: "bob@example.com", }, }, }); expect(result).toBe("Hello Bob, your email is bob@example.com."); }); it("should handle array variables with dot notation", () => { const result = formatTemplate({ template: "First item: {{items.0}}, Second item: {{items.1}}", variables: { items: ["apple", "banana", "cherry"] }, }); expect(result).toBe("First item: apple, Second item: banana"); }); it("should handle boolean variables", () => { const result = formatTemplate({ template: "Is active: {{isActive}}, Is verified: {{isVerified}}", variables: { isActive: true, isVerified: false }, }); expect(result).toBe("Is active: true, Is verified: false"); }); it("should handle numeric variables", () => { const result = formatTemplate({ template: "Price: ${{price}}, Quantity: {{quantity}}", variables: { price: 19.99, quantity: 5 }, }); expect(result).toBe("Price: $19.99, Quantity: 5"); }); it("should render empty string for missing variables", () => { const result = formatTemplate({ template: "Hello {{name}}, welcome to {{place}}!", variables: { name: "Alice" }, }); expect(result).toBe("Hello Alice, welcome to !"); }); it("should handle templates with no variables", () => { const result = formatTemplate({ template: "This is a static template with no variables.", variables: {}, }); expect(result).toBe("This is a static template with no variables."); }); it("should handle empty template", () => { const result = formatTemplate({ template: "", variables: { name: "Alice" }, }); expect(result).toBe(""); }); it("should handle template with only variables", () => { const result = formatTemplate({ template: "{{greeting}}", variables: { greeting: "Hello World" }, }); expect(result).toBe("Hello World"); }); it("should handle null and undefined variables", () => { const result = formatTemplate({ template: "Value1: {{value1}}, Value2: {{value2}}", variables: { value1: null, value2: undefined }, }); expect(result).toBe("Value1: , Value2: "); }); it("should handle mustache sections with arrays", () => { const result = formatTemplate({ template: "Items: {{#items}}{{name}} {{/items}}", variables: { items: [{ name: "Apple" }, { name: "Banana" }, { name: "Cherry" }], }, }); expect(result).toBe("Items: Apple Banana Cherry "); }); it("should not HTML-escape special characters in code snippets", () => { const result = formatTemplate({ template: "Code: {{code}}", variables: { code: "if (a > b && c < d)" }, }); expect(result).toBe("Code: if (a > b && c < d)"); }); it("should preserve code in evaluation templates", () => { const result = formatTemplate({ template: "[Query]: {{input}}\n[Answer]: {{output}}", variables: { input: "How do I check if x > 5?", output: "Use: if (x > 5) { }", }, }); expect(result).toBe( "[Query]: How do I check if x > 5?\n[Answer]: Use: if (x > 5) { }" ); }); it("should handle template with nested object variables", () => { const result = formatTemplate({ template: "Hello {{user.name}}, your email is {{user.email}}.", variables: { user: { name: "Bob", email: "bob@example.com" }, }, }); expect(result).toBe("Hello Bob, your email is bob@example.com."); }); it("should stringify nested object variables when accessed directly", () => { const result = formatTemplate({ template: "Hello {{user}}", variables: { user: { name: "Bob", email: "bob@example.com" }, }, }); expect(result).toBe('Hello {"name":"Bob","email":"bob@example.com"}'); }); });

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/Arize-ai/phoenix'

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