mirror of
https://origin.cursor.com/mrdevmx/panels.git
synced 2026-10-09 22:23:18 +00:00
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { assertEquals } from "jsr:@std/assert@1";
|
|
import {
|
|
canonicalRiskCode,
|
|
formatNss,
|
|
normalizeWorker,
|
|
pipelineLabelFor,
|
|
titleCase,
|
|
validateWorkerFields,
|
|
} from "./mx.ts";
|
|
|
|
Deno.test("normaliza identidad y conserva el código real de riesgo", () => {
|
|
const worker = normalizeWorker({
|
|
first_name: " JUAN CARLOS ",
|
|
last_name_p: "DE LA CRUZ",
|
|
last_name_m: "PÉREZ",
|
|
curp: "abcd010101hqrxxx01",
|
|
rfc: "abcd010101ab1",
|
|
nss: "12 34 56 78 901",
|
|
phone: "998 100 2000",
|
|
email: "PERSONA@EJEMPLO.COM",
|
|
address: "AVENIDA PRINCIPAL 10",
|
|
hire_type: "arctec",
|
|
position: "AYUDANTE GENERAL",
|
|
risk_code: "negro",
|
|
work_type: "n",
|
|
daily_wage: 500,
|
|
});
|
|
assertEquals(worker.first_name, "Juan Carlos");
|
|
assertEquals(worker.last_name_p, "De la Cruz");
|
|
assertEquals(worker.email, "persona@ejemplo.com");
|
|
assertEquals(worker.risk_code, "negro");
|
|
assertEquals(worker.nss, "12345678901");
|
|
});
|
|
|
|
Deno.test("riesgo semántico solo se convierte cuando llega como nivel", () => {
|
|
assertEquals(canonicalRiskCode("alto"), "rojo");
|
|
assertEquals(canonicalRiskCode("medio"), "amarillo");
|
|
assertEquals(canonicalRiskCode("bajo"), "verde");
|
|
assertEquals(canonicalRiskCode("naranja"), "naranja");
|
|
});
|
|
|
|
Deno.test("campos laborales obligatorios permanecen validados", () => {
|
|
const errors = validateWorkerFields({});
|
|
assertEquals(errors.first_name, "Nombre obligatorio");
|
|
assertEquals(errors.hire_type, undefined);
|
|
assertEquals(errors.position, "Cargo obligatorio");
|
|
assertEquals(errors.daily_wage, "Jornal obligatorio");
|
|
});
|
|
|
|
Deno.test("utilidades de texto mantienen formato mexicano", () => {
|
|
assertEquals(titleCase("MARÍA DE LOS ÁNGELES"), "María de los Ángeles");
|
|
assertEquals(formatNss("12-34-56-78901"), "12345678901");
|
|
assertEquals(pipelineLabelFor("listo_gafete"), "Listo gafete");
|
|
});
|