import assert from "node:assert/strict"; import { test } from "node:test"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { createInstance } from "i18next"; import { renderToStaticMarkup } from "react-dom/server"; import { I18nextProvider } from "react-i18next"; import { accessKeys } from "./access-api"; import { AccessForm } from "./access-form"; import { AccessWorkspacePage } from "./access-workspace"; import { accessEnglish, accessSpanish } from "./i18n"; test("los catálogos presentan alta mediante acción y no un formulario junto al listado", async () => { for (const [language, label] of [ ["es", "Nuevo sistema"], ["en", "New system"], ] as const) { const i18n = createInstance(); await i18n.init({ lng: language, resources: { es: { access: accessSpanish }, en: { access: accessEnglish } }, }); const client = new QueryClient(); client.setQueryData(accessKeys.scope("global"), { items: [], reviews: [], coverage: [] }); const markup = renderToStaticMarkup( ); assert.ok(markup.includes(label)); assert.equal(markup.includes(" { const i18n = createInstance(); await i18n.init({ lng: "es", resources: { es: { access: accessSpanish } } }); const client = new QueryClient(); const markup = renderToStaticMarkup( undefined} people={[]} scope="e0420eb9-2aab-4368-96a0-2ce83dd23eb4" /> ); assert.ok(markup.includes("Fecha de caducidad")); assert.ok(markup.includes("Sistema, entorno y uso quedan fijos")); assert.equal(markup.includes('type="password"'), false); const field = markup.match(/]*name="expiresOn"[^>]*>/)?.[0]; assert.ok(field); assert.equal(field.includes("required"), false); client.clear(); }); test("la ayuda explica todos los elementos en ambos idiomas y distingue el ámbito", async () => { const { EntityHelp } = await import("./entity-help"); const { helpSpanish, helpEnglish } = await import("./help-i18n"); for (const [language, content] of [ ["es", helpSpanish], ["en", helpEnglish], ] as const) { const i18n = createInstance(); await i18n.init({ lng: language, resources: { [language]: { access: content } } }); for (const kind of [ "system", "resource_type", "permission", "template", "environment", "account", "account_person", "group", "membership", "resource", "grant", "need", "coverage", "company", "person", "department", "site", "assignment", ] as const) { const markup = renderToStaticMarkup( ); assert.ok(markup.includes(" renderToStaticMarkup( ); assert.ok(renderScope("global").includes(content.helpGlobalScope)); assert.ok(renderScope("company").includes(content.helpCompanyScope)); assert.equal(renderScope("company").includes(content.helpGlobalScope), false); } }); test("los ejemplos del sistema orientan sin rellenar datos del alta", async () => { const i18n = createInstance(); await i18n.init({ lng: "es", resources: { es: { access: accessSpanish } } }); const client = new QueryClient(); const markup = renderToStaticMarkup( undefined} people={[]} scope="global" /> ); assert.ok(markup.includes("Microsoft 365")); assert.ok(markup.includes("Ámbito global")); assert.ok(markup.indexOf('name="name"') < markup.indexOf("]*name="name"[^>]*>/)?.[0]; assert.ok(name); assert.equal(/value="[^"]+"/.test(name), false); assert.equal(markup.includes('value="Microsoft 365"'), false); client.clear(); });