Presupuestador_web/shared/lib/contexts/common/domain/entities/MoneyValue.test.ts
2024-07-16 19:17:52 +02:00

106 lines
3.0 KiB
TypeScript

import { MoneyValue } from "./MoneyValue"; // Asegúrate de importar correctamente la clase MoneyValue.
describe("MoneyValue Value Object", () => {
// Prueba la creación de un valor monetario válido.
it("Should create a valid money value (number)", () => {
const validMoneyValue = MoneyValue.create({
amount: 10055,
});
expect(validMoneyValue.isSuccess).toBe(true);
expect(validMoneyValue.object.toUnit()).toBe(100.55);
});
// Prueba la creación de un valor monetario nulo.
it("Should create a valid null money value", () => {
const nullMoneyValue = MoneyValue.create({
amount: null,
});
expect(nullMoneyValue.isSuccess).toBe(true);
expect(nullMoneyValue.object.isEmpty()).toBe(true);
});
// Prueba la creación de un valor monetario válido a partir de una cadena.
it("Should create a valid money value from string and format it", () => {
const validMoneyValueFromString = MoneyValue.create({
amount: "5075",
scale: 2,
});
expect(validMoneyValueFromString.isSuccess).toBe(true);
expect(validMoneyValueFromString.object.toString()).toEqual("50.75");
});
// Prueba la creación de un valor monetario con una cadena no válida.
it("Should fail to create money value from invalid string", () => {
const invalidMoneyValueFromString = MoneyValue.create({
amount: "invalid",
});
expect(invalidMoneyValueFromString.isFailure).toBe(true);
});
it("should create MoneyValue from number and currency", () => {
const result = MoneyValue.create({
amount: 100,
scale: 3,
currencyCode: "EUR",
});
expect(result.isSuccess).toBe(true);
const moneyValue = result.object;
expect(moneyValue.getAmount()).toBe(100);
expect(moneyValue.getCurrency().code).toBe("EUR");
expect(moneyValue.getScale()).toBe(3);
});
it("should create MoneyValue from string and currency", () => {
const result = MoneyValue.create({
amount: "12345",
scale: 2,
currencyCode: "USD",
});
expect(result.isSuccess).toBe(true);
const moneyValue = result.object;
expect(moneyValue.getAmount()).toBe(12345);
expect(moneyValue.getCurrency().code).toBe("USD");
expect(moneyValue.getScale()).toBe(2);
});
it("should fail to create MoneyValue with invalid amount", () => {
const result = MoneyValue.create({
amount: "invalid",
scale: 2,
currencyCode: "USD",
});
expect(result.isFailure).toBe(true);
});
// Prueba la conversión a cadena.
it("Should convert to string", () => {
const moneyValue = MoneyValue.create({
amount: 7525,
}).object;
const result = moneyValue.toString();
expect(result).toBe("75.25");
});
// Prueba la verificación de valor cero.
it("Should check if value is zero", () => {
const zeroMoneyValue = MoneyValue.create({
amount: 0,
}).object;
const nonZeroMoneyValue = MoneyValue.create({
amount: 50,
}).object;
expect(zeroMoneyValue.isZero()).toBe(true);
expect(nonZeroMoneyValue.isZero()).toBe(false);
});
});