Files
EpicNext-Cms/src/i18n/commandocentrum-messages.test.ts
T
openhands 388d8992f8
CI / check (push) Failing after 1m1s
CI / deploy (push) Skipped
CI / publish-container (push) Skipped
feat: add CSV/JSON export, advanced bulk filters & selection to Catalog Manager
- Admin Audit Log: CSV/JSON export via ?format=query param
- Catalog Manager: club_only / have_offer filters (multi-filter support)
- Offer discovery: refactored discoverOffers() to accept filters object
- Translations added for new filter labels
- Test updates for all modified paths
2026-09-12 20:40:33 +02:00

53 lines
1.7 KiB
TypeScript

import { readFileSync } from "node:fs";
import { createTranslator } from "next-intl";
import { describe, expect, it } from "vitest";
import en from "@/messages/en.json";
import itMessages from "@/messages/it.json";
import nl from "@/messages/nl.json";
import { mergeMessages } from "./merge-messages";
const namespace = "pages.admin.commandocentrum";
const keys = new Set(
["page.tsx", "commandocentrum-controls.tsx"].flatMap((file) =>
Array.from(
readFileSync(`src/app/admin/commandocentrum/${file}`, "utf8").matchAll(
/\bt\("([^"]+)"/g,
),
(match) => match[1],
),
),
);
for (const group of ["hotel", "players", "rewards", "advanced"])
keys.add(`groups.${group}`);
describe("command center translations", () => {
it.each([
["en", en],
["it", itMessages],
] as const)("provides every rendered message in %s", (locale, messages) => {
const errors: unknown[] = [];
const t = createTranslator({
locale,
messages: messages as typeof en,
namespace,
onError: (error) => errors.push(error),
});
for (const key of keys) {
expect(t.has(key as Parameters<typeof t>[0]), key).toBe(true);
expect(
t(key as Parameters<typeof t>[0], { count: 42, time: "12:34" }),
key,
).not.toBe("");
}
expect(errors).toEqual([]);
});
it("supplies nested fallback messages to a client translator and formats values", () => {
const messages = mergeMessages(en, nl) as typeof en;
const t = createTranslator({ locale: "nl", messages, namespace });
expect(t("title")).toBe(nl.pages.admin.commandocentrum.title);
expect(t("totalAccounts", { count: 42 })).toBe("42 total accounts");
expect(t("groups.players")).toBe("Players");
expect(t("checkedAt", { time: "12:34" })).toBe("Checked at 12:34");
});
});