From 35273f525d6ca43aeb5241d351c7e1278659eff2 Mon Sep 17 00:00:00 2001 From: "M. George Hansen" Date: Wed, 20 Aug 2025 08:57:15 +1200 Subject: [PATCH] test(i18n): fix broken tests missing translation messages --- packages/i18n/.gitignore | 2 +- .../tests/features/locale-maximization.ts | 61 ------------------- packages/i18n/tests/fixtures.ts | 6 +- .../i18n/tests/fixtures/base/en/common.json | 7 +++ .../i18n/tests/fixtures/base/en/drama.json | 3 + .../tests/fixtures/base/fr-Arab/common.json | 7 +++ .../tests/fixtures/base/fr-Arab/drama.json | 3 + .../i18n/tests/fixtures/base/fr/common.json | 7 +++ .../i18n/tests/fixtures/base/fr/drama.json | 3 + packages/i18n/tests/tsconfig.json | 1 + 10 files changed, 35 insertions(+), 65 deletions(-) delete mode 100644 packages/i18n/tests/features/locale-maximization.ts create mode 100644 packages/i18n/tests/fixtures/base/en/common.json create mode 100644 packages/i18n/tests/fixtures/base/en/drama.json create mode 100644 packages/i18n/tests/fixtures/base/fr-Arab/common.json create mode 100644 packages/i18n/tests/fixtures/base/fr-Arab/drama.json create mode 100644 packages/i18n/tests/fixtures/base/fr/common.json create mode 100644 packages/i18n/tests/fixtures/base/fr/drama.json diff --git a/packages/i18n/.gitignore b/packages/i18n/.gitignore index a89bbcc..2013273 100644 --- a/packages/i18n/.gitignore +++ b/packages/i18n/.gitignore @@ -1 +1 @@ -!/tests/messages/*/*.json +!/tests/fixtures/**/*.json diff --git a/packages/i18n/tests/features/locale-maximization.ts b/packages/i18n/tests/features/locale-maximization.ts deleted file mode 100644 index 79a947c..0000000 --- a/packages/i18n/tests/features/locale-maximization.ts +++ /dev/null @@ -1,61 +0,0 @@ -import assert from "node:assert/strict"; -import { beforeEach, describe, it } from "node:test"; -import type I18n from "@websnacksjs/i18n"; -import { type Fixtures, withFixture } from "../fixtures.js"; - -describe("i18n.supportedLocales()", () => { - let i18n: I18n; - beforeEach(() => { - i18n = withFixture("base", { - supportedLocales: ["en", "fr", "fr-Arab"], - }); - }); - - it("returns maximized locales for all declared, supported locales", () => { - assert.deepEqual(i18n.supportedLocales(), [ - "en-Latn-US", - "fr-Latn-FR", - "fr-Arab-FR", - ]); - }); -}); - -describe("i18n.loadMessages(...)", () => { - let i18n: I18n; - beforeEach(() => { - i18n = withFixture("base"); - }); - - it("guesses region of locales w/o region tags", async () => { - const t = await i18n.loadMessages({ - locale: "fr-Latn", - }); - assert.equal(t.locale(), "fr-Latn-FR"); - }); - - it("guesses script of locales w/ region tags", async () => { - const t = await i18n.loadMessages({ - locale: "fr-FR", - }); - assert.equal(t.locale(), "fr-Latn-FR"); - }); - - it("guesses script & region of bare language locales", async () => { - const t = await i18n.loadMessages({ - locale: "fr", - }); - assert.equal(t.locale(), "fr-Latn-FR"); - }); - - it("does NOT fallback to bare language locales", async () => { - await assert.rejects( - i18n.loadMessages({ - locale: "en-Arab", - }), - { - message: - 'no declared locale matches requested locale of "en-Arab-US" (maximized from "en-Arab")', - }, - ); - }); -}); diff --git a/packages/i18n/tests/fixtures.ts b/packages/i18n/tests/fixtures.ts index 404f34e..1bb1ded 100644 --- a/packages/i18n/tests/fixtures.ts +++ b/packages/i18n/tests/fixtures.ts @@ -2,8 +2,8 @@ import I18n, { type I18nOptions } from "@websnacksjs/i18n"; export type Fixtures = { base: { - common: typeof import("./fixtures/base/messages/en/common.json"); - drama: typeof import("./fixtures/base/messages/en/drama.json"); + common: typeof import("./fixtures/base/en/common.json"); + drama: typeof import("./fixtures/base/en/drama.json"); }; }; @@ -17,7 +17,7 @@ export const withFixture = ( supportedLocales: ["en", "fr", "fr-Arab"], namespaces: ["drama"], messagesUrlTemplate: new URL( - "./fixtures/base/messages/:locale/:namespace.json", + "./fixtures/base/:locale/:namespace.json", import.meta.url, ), ...(overrides as Partial>), diff --git a/packages/i18n/tests/fixtures/base/en/common.json b/packages/i18n/tests/fixtures/base/en/common.json new file mode 100644 index 0000000..9f2a4d3 --- /dev/null +++ b/packages/i18n/tests/fixtures/base/en/common.json @@ -0,0 +1,7 @@ +{ + "oh hai": "Oh hai {{name}}!", + "denial": "I did not hit her. I did not.", + "flower shop": { + "doggy": "hello doggy!" + } +} diff --git a/packages/i18n/tests/fixtures/base/en/drama.json b/packages/i18n/tests/fixtures/base/en/drama.json new file mode 100644 index 0000000..4920bb8 --- /dev/null +++ b/packages/i18n/tests/fixtures/base/en/drama.json @@ -0,0 +1,3 @@ +{ + "tearing me apart": "You're tearing me apart, Lisa!" +} diff --git a/packages/i18n/tests/fixtures/base/fr-Arab/common.json b/packages/i18n/tests/fixtures/base/fr-Arab/common.json new file mode 100644 index 0000000..2997b70 --- /dev/null +++ b/packages/i18n/tests/fixtures/base/fr-Arab/common.json @@ -0,0 +1,7 @@ +{ + "oh hai": "أوه سالو، \u2066{{name}}\u2069!", + "denial": "جُ ن لي با فرابيه. جُ ن لي با.", + "flower shop": { + "doggy": "سالو توتو!" + } +} diff --git a/packages/i18n/tests/fixtures/base/fr-Arab/drama.json b/packages/i18n/tests/fixtures/base/fr-Arab/drama.json new file mode 100644 index 0000000..b59fde5 --- /dev/null +++ b/packages/i18n/tests/fixtures/base/fr-Arab/drama.json @@ -0,0 +1,3 @@ +{ + "tearing me apart": "تو م ديشير، ليزا!" +} diff --git a/packages/i18n/tests/fixtures/base/fr/common.json b/packages/i18n/tests/fixtures/base/fr/common.json new file mode 100644 index 0000000..6892b11 --- /dev/null +++ b/packages/i18n/tests/fixtures/base/fr/common.json @@ -0,0 +1,7 @@ +{ + "oh hai": "Oh salut, Mark !", + "denial": "Je ne l'ai pas frappée. Je ne l'ai pas.", + "flower shop": { + "doggy": "Salut toutou !" + } +} diff --git a/packages/i18n/tests/fixtures/base/fr/drama.json b/packages/i18n/tests/fixtures/base/fr/drama.json new file mode 100644 index 0000000..6141081 --- /dev/null +++ b/packages/i18n/tests/fixtures/base/fr/drama.json @@ -0,0 +1,3 @@ +{ + "tearing me apart": "Tu me déchires, Lisa !" +} diff --git a/packages/i18n/tests/tsconfig.json b/packages/i18n/tests/tsconfig.json index 9b8eae4..3c0fd91 100644 --- a/packages/i18n/tests/tsconfig.json +++ b/packages/i18n/tests/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../tsconfig.json", "compilerOptions": { "resolveJsonModule": true, + "allowImportingTsExtensions": true, "noEmit": true, "rootDir": "." },