33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
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<string, unknown>;
|
|
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<string, unknown>).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=");
|
|
});
|
|
});
|