import { describe, expect, it } from "vitest"; import { applyTemplate, type TemplateContext } from "./templating.js"; describe("applyTemplate", () => { it("renders primitive values", () => { const ctx = { MessageSid: "sid", IsNewSession: "no" } as TemplateContext; const overrides = ctx as Record; overrides.MessageSid = 42; overrides.IsNewSession = true; expect(applyTemplate("sid={{MessageSid}} new={{IsNewSession}}", ctx)).toBe("sid=42 new=true"); }); it("renders arrays of primitives", () => { const ctx = { MediaPaths: ["a"] } as TemplateContext; (ctx as Record).MediaPaths = ["a", 2, true, null, { ok: false }]; expect(applyTemplate("paths={{MediaPaths}}", ctx)).toBe("paths=a,2,true"); }); it("drops object values", () => { const ctx: TemplateContext = { CommandArgs: { raw: "go" } }; expect(applyTemplate("args={{CommandArgs}}", ctx)).toBe("args="); }); it("renders missing placeholders as empty", () => { const ctx: TemplateContext = {}; expect(applyTemplate("missing={{Missing}}", ctx)).toBe("missing="); }); });