JUNOHUB-test/tests/l1/knowledgeTemplate.test.ts
Saad Mohsin 80b53535c1 yes
2026-04-12 04:15:11 +05:00

65 lines
2.4 KiB
TypeScript

import { describe, expect, it } from "vitest"
import {
buildKnowledgeTemplateStored,
mergeTemplateAnswers,
parseKnowledgeTemplateJson,
} from "@/lib/kb/knowledgeTemplate"
describe("knowledgeTemplate v3", () => {
it("migrates v1 answers into genericAnswers", () => {
const parsed = parseKnowledgeTemplateJson({
answers: { brandVoice: "Hello" },
version: 1,
})
expect(parsed?.version).toBe(3)
expect(parsed?.genericAnswers.aiToneHowWeSound).toContain("Brand voice")
expect(parsed?.genericAnswers.aiToneHowWeSound).toContain("Hello")
})
it("migrates v2 legacyAnswers and drops sharedFields from template shape", () => {
const parsed = parseKnowledgeTemplateJson({
version: 2,
legacyAnswers: { brandVoice: "X" },
sharedFields: { sf_brand_display_name: "ignored" },
})
expect(parsed?.version).toBe(3)
expect(parsed?.genericAnswers.aiToneHowWeSound).toContain("X")
})
it("reads v3 genericAnswers", () => {
const parsed = parseKnowledgeTemplateJson({
version: 3,
genericAnswers: { communicationFormality: "Casual" },
updatedAt: "2020-01-01",
})
expect(parsed?.genericAnswers.communicationFormality).toBe("Casual")
})
it("buildKnowledgeTemplateStored normalizes keys", () => {
const s = buildKnowledgeTemplateStored({
answers: { aiToneHowWeSound: " hi ", unknown: "x" } as Record<string, string>,
})
expect(s.genericAnswers.aiToneHowWeSound).toBe("hi")
expect(s.genericAnswers).not.toHaveProperty("unknown")
})
it("mergeTemplateAnswers patches by key", () => {
const prev = parseKnowledgeTemplateJson({
version: 3,
genericAnswers: { aiToneHowWeSound: "a" },
})
const s = mergeTemplateAnswers(prev, { whenWeDoNotKnow: "b" })
expect(s.genericAnswers.aiToneHowWeSound).toBe("a")
expect(s.genericAnswers.whenWeDoNotKnow).toBe("b")
})
it("mergeTemplateAnswers clears when empty string sent for key", () => {
const prev = parseKnowledgeTemplateJson({
version: 3,
genericAnswers: { aiToneHowWeSound: "a" },
})
const s = mergeTemplateAnswers(prev, { aiToneHowWeSound: " " })
expect(s.genericAnswers.aiToneHowWeSound).toBeUndefined()
})
})