metis-desk/modules/companies/src/web/access/access.test.tsx

64 lines
2.3 KiB
TypeScript
Raw Normal View History

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(
<I18nextProvider i18n={i18n}>
<QueryClientProvider client={client}>
<AccessWorkspacePage csrfToken="test" scope="global" />
</QueryClientProvider>
</I18nextProvider>
);
assert.ok(markup.includes(label));
assert.equal(markup.includes("<form"), false);
client.clear();
}
});
test("cuentas ofrecen caducidad opcional y campos sin contraseña", async () => {
const i18n = createInstance();
await i18n.init({ lng: "es", resources: { es: { access: accessSpanish } } });
const client = new QueryClient();
const markup = renderToStaticMarkup(
<I18nextProvider i18n={i18n}>
<QueryClientProvider client={client}>
<AccessForm
csrfToken="test"
data={{ items: [], reviews: [], coverage: [] }}
kind="account"
onSaved={() => undefined}
people={[]}
scope="e0420eb9-2aab-4368-96a0-2ce83dd23eb4"
/>
</QueryClientProvider>
</I18nextProvider>
);
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(/<input[^>]*name="expiresOn"[^>]*>/)?.[0];
assert.ok(field);
assert.equal(field.includes("required"), false);
client.clear();
});