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);
|
|
|
|
|
});
|
|
|
|
|
});
|