Files
WRNexusJS/packages/cli/test/i18n-command.test.ts
Clintchiz 586a6db8ff
Quality / quality (ubuntu-latest) (push) Failing after 21s
Quality / quality (windows-latest) (push) Canceled after 0s
release: WRNexusJS 0.8.0
2026-08-02 23:18:51 +05:30

36 lines
1.6 KiB
TypeScript

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 { <h1>{t:home.title}</h1> } }`,
);
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 { <h1>{t:home.title}</h1> } }`,
);
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);
});