import { expect, test } from "bun:test"; import { existsSync, mkdirSync, mkdtempSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { runI18nCommand } from "../src/i18n-command.ts"; test("i18n extract and validate audit native WRN translation keys", () => { const root = mkdtempSync(join(tmpdir(), "wrnexus-i18n-cli-")); mkdirSync(join(root, "app/pages"), { recursive: true }); mkdirSync(join(root, "app/locales"), { recursive: true }); writeFileSync( join(root, "app/pages/index.wrn"), `page Home { view {

{t:home.title}

} }`, ); writeFileSync(join(root, "app/locales/en.json"), JSON.stringify({ home: { title: "Home" } })); writeFileSync( join(root, "app/locales/mr.json"), JSON.stringify({ home: { title: "मुख्यपृष्ठ" } }), ); expect(runI18nCommand(root, "extract")).toBe(true); expect(existsSync(join(root, ".wrnexus/i18n-keys.json"))).toBe(true); expect(runI18nCommand(root, "validate")).toBe(true); }); test("i18n validate fails missing locale keys", () => { const root = mkdtempSync(join(tmpdir(), "wrnexus-i18n-cli-")); mkdirSync(join(root, "app/pages"), { recursive: true }); mkdirSync(join(root, "app/locales"), { recursive: true }); writeFileSync( join(root, "app/pages/index.wrn"), `page Home { view {

{t:home.title}

} }`, ); writeFileSync(join(root, "app/locales/en.json"), JSON.stringify({ home: { title: "Home" } })); writeFileSync(join(root, "app/locales/es.json"), JSON.stringify({})); expect(runI18nCommand(root, "validate")).toBe(false); });