Uecko_ERP/packages/rdx-ddd/src/value-objects/__tests__/phone-number.test.ts
2025-09-04 12:02:24 +02:00

58 lines
2.1 KiB
TypeScript

import { parsePhoneNumberWithError } from "libphonenumber-js";
import { PhoneNumber } from "../phone-number";
describe("PhoneNumber", () => {
const validPhone = "+14155552671"; // Número válido en formato internacional
const invalidPhone = "12345"; // Número inválido
const nullablePhone = "";
test("debe crear un número de teléfono válido", () => {
const result = PhoneNumber.create(validPhone);
expect(result.isSuccess).toBe(true);
expect(result.data).toBeInstanceOf(PhoneNumber);
});
test("debe fallar al crear un número de teléfono inválido", () => {
const result = PhoneNumber.create(invalidPhone);
expect(result.isFailure).toBe(true);
expect(result.getError()?.message).toBe(
"Please specify a valid phone number (include the international prefix)."
);
});
test("debe obtener el valor del número de teléfono", () => {
const result = PhoneNumber.create(validPhone);
expect(result.isSuccess).toBe(true);
const phoneNumber = result.data;
expect(phoneNumber?.getProps()).toBe(validPhone);
});
test("debe obtener el código de país del número", () => {
const result = PhoneNumber.create(validPhone);
expect(result.isSuccess).toBe(true);
const phoneNumber = result.data;
expect(phoneNumber?.getCountryCode()).toBe("US");
});
test("debe obtener el número nacional del teléfono", () => {
const result = PhoneNumber.create(validPhone);
expect(result.isSuccess).toBe(true);
const phoneNumber = result.data;
expect(phoneNumber?.getNationalNumber()).toBe("4155552671");
});
test("debe obtener el número formateado", () => {
const result = PhoneNumber.create(validPhone);
expect(result.isSuccess).toBe(true);
const phoneNumber = result.data;
expect(phoneNumber?.getNumber()).toBe(parsePhoneNumberWithError(validPhone).number.toString());
});
test("debe devolver undefined para la extensión si no hay una", () => {
const result = PhoneNumber.create(validPhone);
expect(result.isSuccess).toBe(true);
const phoneNumber = result.data;
expect(phoneNumber?.getExtension()).toBeUndefined();
});
});