Presupuestador_web/shared/lib/contexts/common/domain/entities/MoneyValue.test.ts

106 lines
3.0 KiB
TypeScript
Raw Normal View History

2024-04-23 15:29:38 +00:00
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({
2024-07-15 15:41:42 +00:00
amount: null,
2024-04-23 15:29:38 +00:00
});
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",
2024-07-16 17:17:52 +00:00
scale: 2,
2024-04-23 15:29:38 +00:00
});
expect(validMoneyValueFromString.isSuccess).toBe(true);
2024-07-16 17:17:52 +00:00
expect(validMoneyValueFromString.object.toString()).toEqual("50.75");
2024-04-23 15:29:38 +00:00
});
// 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,
2024-07-15 15:41:42 +00:00
scale: 3,
currencyCode: "EUR",
2024-04-23 15:29:38 +00:00
});
expect(result.isSuccess).toBe(true);
const moneyValue = result.object;
expect(moneyValue.getAmount()).toBe(100);
expect(moneyValue.getCurrency().code).toBe("EUR");
2024-07-16 17:17:52 +00:00
expect(moneyValue.getScale()).toBe(3);
2024-04-23 15:29:38 +00:00
});
it("should create MoneyValue from string and currency", () => {
const result = MoneyValue.create({
amount: "12345",
2024-07-15 15:41:42 +00:00
scale: 2,
currencyCode: "USD",
2024-04-23 15:29:38 +00:00
});
expect(result.isSuccess).toBe(true);
const moneyValue = result.object;
expect(moneyValue.getAmount()).toBe(12345);
expect(moneyValue.getCurrency().code).toBe("USD");
2024-07-16 17:17:52 +00:00
expect(moneyValue.getScale()).toBe(2);
2024-04-23 15:29:38 +00:00
});
it("should fail to create MoneyValue with invalid amount", () => {
const result = MoneyValue.create({
amount: "invalid",
2024-07-15 15:41:42 +00:00
scale: 2,
currencyCode: "USD",
2024-04-23 15:29:38 +00:00
});
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();
2024-07-16 17:17:52 +00:00
expect(result).toBe("75.25");
2024-04-23 15:29:38 +00:00
});
// Prueba la verificación de valor cero.
it("Should check if value is zero", () => {
2024-07-15 15:41:42 +00:00
const zeroMoneyValue = MoneyValue.create({
2024-04-23 15:29:38 +00:00
amount: 0,
2024-07-15 15:41:42 +00:00
}).object;
const nonZeroMoneyValue = MoneyValue.create({
2024-04-23 15:29:38 +00:00
amount: 50,
2024-07-15 15:41:42 +00:00
}).object;
2024-04-23 15:29:38 +00:00
expect(zeroMoneyValue.isZero()).toBe(true);
expect(nonZeroMoneyValue.isZero()).toBe(false);
});
});