UNPKG

@iflow-mcp/ansvar-systems-german-law-mcp

Version:

German legal research MCP server with statutes, case law, and preparatory works from gesetze-im-internet.de

41 lines (40 loc) • 2.05 kB
import test from "node:test"; import assert from "node:assert/strict"; import { buildFtsQueryVariants, sanitizeFtsInput } from "../src/utils/fts-query.js"; test("plain query returns tiered FTS5 variants", () => { const result = buildFtsQueryVariants("Datenschutz Gesetz"); assert.ok(result.length >= 2, "should return multiple variants"); assert.ok(result[0].includes("Datenschutz"), "first variant should contain search terms"); }); test("single token returns prefix variant", () => { const result = buildFtsQueryVariants("Kündigungsschutz"); assert.ok(result.length >= 1, "should return at least one variant"); assert.ok(result.some(v => v.includes("*")), "should include a prefix wildcard variant"); }); test("empty query returns empty array", () => { const result = buildFtsQueryVariants(""); assert.equal(result.length, 0); }); test("sanitizeFtsInput strips double quotes", () => { const sanitized = sanitizeFtsInput('"unmatched quote'); assert.ok(!sanitized.includes('"'), "should not contain raw double quotes"); const result = buildFtsQueryVariants(sanitized); assert.ok(Array.isArray(result), "should return an array"); }); test("sanitizeFtsInput strips parentheses", () => { const sanitized = sanitizeFtsInput("test(value)"); const result = buildFtsQueryVariants(sanitized); const joined = result.join(" "); assert.ok(joined.includes("test") && joined.includes("value"), "should contain the search terms"); }); test("sanitizeFtsInput handles special characters", () => { const sanitized = sanitizeFtsInput("()^:"); const result = buildFtsQueryVariants(sanitized); assert.ok(Array.isArray(result), "should return an array"); }); test("sanitizeFtsInput handles mixed quotes and operators", () => { const sanitized = sanitizeFtsInput('a" OR b'); const result = buildFtsQueryVariants(sanitized); assert.ok(Array.isArray(result), "should return an array"); assert.ok(result.every(v => typeof v === "string"), "all variants should be strings"); });