MCP Tools for Obsidian

import { describe, expect, test } from "bun:test"; import { parseTemplateParameters } from "./parseTemplateParameters"; import { PromptParameterSchema } from "shared"; describe("parseTemplateParameters", () => { test("returns empty array for content without parameters", () => { const content = "No parameters here"; const result = parseTemplateParameters(content); PromptParameterSchema.array().assert(result); expect(result).toEqual([]); }); test("parses single parameter without description", () => { const content = '<% tp.user.promptArg("name") %>'; const result = parseTemplateParameters(content); PromptParameterSchema.array().assert(result); expect(result).toEqual([{ name: "name" }]); }); test("parses single parameter with description", () => { const content = '<% tp.user.promptArg("name", "Enter your name") %>'; const result = parseTemplateParameters(content); PromptParameterSchema.array().assert(result); expect(result).toEqual([{ name: "name", description: "Enter your name" }]); }); test("parses multiple parameters", () => { const content = ` <% tp.user.promptArg("name", "Enter your name") %> <% tp.user.promptArg("age", "Enter your age") %> `; const result = parseTemplateParameters(content); PromptParameterSchema.array().assert(result); expect(result).toEqual([ { name: "name", description: "Enter your name" }, { name: "age", description: "Enter your age" }, ]); }); test("ignores invalid template syntax", () => { const content = ` <% invalid.syntax %> <% tp.user.promptArg("name", "Enter your name") %> `; const result = parseTemplateParameters(content); PromptParameterSchema.array().assert(result); expect(result).toEqual([{ name: "name", description: "Enter your name" }]); }); });