import assert from "node:assert/strict"; import test from "node:test"; import { findDuplicateTranslationKeys } from "../scripts/i18n-catalog-validation.mjs"; test("allows the same translation key once in each locale", () => { const source = ` export const generatedTranslations = { en: { "i18n:example.share.12345678": "Share" }, de: { "i18n:example.share.12345678": "Freigeben" } }; `; assert.deepEqual(findDuplicateTranslationKeys(source), []); }); test("rejects duplicate keys within a generated locale catalog", () => { const source = ` export const generatedTranslations = { en: { "i18n:example.share.12345678": "Share", "i18n:example.share.12345678": "Share" }, de: { "i18n:example.share.12345678": "Freigabe", "i18n:example.share.12345678": "Freigeben" } }; `; const findings = findDuplicateTranslationKeys(source, "fixture.ts"); assert.equal(findings.length, 2); assert.match(findings[0], /fixture\.ts:\d+:\d+ duplicate generated translation key/); assert.match(findings[0], /locale "en"/); assert.match(findings[1], /locale "de"/); assert.ok(findings.every((finding) => finding.includes("first declared at line"))); });