import { test } from "node:test"; import assert from "node:assert/strict"; import { normalizePhone } from "./phone.ts"; test("normaliza las formas mexicanas de diez dígitos", () => { assert.equal(normalizePhone("5588887777"), "+525588887777"); assert.equal(normalizePhone("55 8888 7777"), "+525588887777"); assert.equal(normalizePhone("(55) 8888-7777"), "+525588887777"); assert.equal(normalizePhone("55.8888.7777"), "+525588887777"); }); test("acepta el prefijo de larga distancia 01", () => { assert.equal(normalizePhone("01 55 8888 7777"), "+525588887777"); }); test("acepta el 52 con y sin más", () => { assert.equal(normalizePhone("+52 55 8888 7777"), "+525588887777"); assert.equal(normalizePhone("525588887777"), "+525588887777"); assert.equal(normalizePhone("0052 55 8888 7777"), "+525588887777"); }); test("colapsa el 521 heredado de WhatsApp al formato actual", () => { // El 1 después del 52 era el marcador de móvil; desde 2019 ya no se disca, // pero sigue apareciendo en los identificadores de mensajería. assert.equal(normalizePhone("5215588887777"), "+525588887777"); assert.equal(normalizePhone("+52 1 55 8888 7777"), "+525588887777"); }); test("respeta un internacional que no es México", () => { assert.equal(normalizePhone("+1 305 555 0134"), "+13055550134"); assert.equal(normalizePhone("+34 600 123 456"), "+34600123456"); }); test("devuelve null cuando no se puede normalizar", () => { assert.equal(normalizePhone(null), null); assert.equal(normalizePhone(""), null); assert.equal(normalizePhone(" "), null); assert.equal(normalizePhone("no tengo"), null); assert.equal(normalizePhone("123"), null, "demasiado corto"); assert.equal(normalizePhone("12345678901234567"), null, "demasiado largo"); }); test("es idempotente sobre su propia salida", () => { const once = normalizePhone("55 8888 7777")!; assert.equal(normalizePhone(once), once); });