// The module's messages: en and lt declare the same keys, or a page in one language breaks. import { buildRegistry } from "@conusai-kit/core" import { filesModule } from "@conusai-kit/files" import { createI18n } from "@conusai-kit/i18n" import { tenancyModule } from "@conusai-kit/tenancy" import { describe, expect, it } from "vitest" import { knowledgeModule } from "../index.js" describe("the knowledge module's messages", () => { const catalogues = buildRegistry([tenancyModule, filesModule, knowledgeModule]).catalogues it("declares en and lt, and every en key resolves in lt", () => { const en = catalogues.en?.knowledge ?? {} const lt = catalogues.lt?.knowledge ?? {} const flatten = (tree: Record, prefix = ""): string[] => Object.entries(tree).flatMap(([key, value]) => typeof value === "string" ? [`${prefix}${key}`] : flatten(value as Record, `${prefix}${key}.`), ) const enKeys = flatten(en) const ltKeys = new Set(flatten(lt)) expect(enKeys.length).toBeGreaterThan(0) for (const key of enKeys) expect(ltKeys.has(key), `knowledge.${key} has no Lithuanian message`).toBe(true) }) it("formats a message with values in both locales", () => { const i18n = createI18n("lt", { lt: { knowledge: catalogues.lt?.knowledge ?? {} } }) expect(i18n.message("knowledge.status.documents", { queued: 1, indexing: 2, indexed: 3, failed: 0 })).toContain("1") }) })