import { Quantity } from "./Quantity"; // Asegúrate de importar correctamente la clase Quantity. describe("Quantity Value Object", () => { // Prueba la creación de una cantidad válida. it("Should create a valid quantity (number)", () => { const validQuantity = Quantity.create({ amount: 5 }); expect(validQuantity.isSuccess).toBe(true); expect(validQuantity.object.toNumber()).toBe(5); }); it("Should create a valid quantity (string)", () => { const validQuantity = Quantity.create({ amount: "99" }); expect(validQuantity.isSuccess).toBe(true); expect(validQuantity.object.toNumber()).toBe(99); }); it("Should create a valid quantity (null)", () => { const validQuantity = Quantity.create({ amount: null }); expect(validQuantity.isSuccess).toBe(true); expect(validQuantity.object.isNull).toBeTruthy(); }); // Prueba la creación de una cantidad nula. it("Should create a default quantity", () => { const nullQuantity = Quantity.create(); expect(nullQuantity.isSuccess).toBe(true); expect(nullQuantity.object.amount).toBe(1); expect(nullQuantity.object.precision).toBe(0); }); // Prueba la creación de una cantidad válida a partir de una cadena. it("Should create a valid quantity from string", () => { const validQuantityFromString = Quantity.create({ amount: "10" }); expect(validQuantityFromString.isSuccess).toBe(true); expect(validQuantityFromString.object.toNumber()).toBe(10); }); // Prueba la creación de una cantidad válida a partir de una cadena con decimales. it("Should create a valid quantity from string", () => { const validQuantityFromString = Quantity.create({ amount: "123456", precision: 2 }); expect(validQuantityFromString.isSuccess).toBe(true); expect(validQuantityFromString.object.toNumber()).toBe(1234.56); }); // Prueba la creación de una cantidad con una cadena no válida. it("Should fail to create quantity from invalid string", () => { const invalidQuantityFromString = Quantity.create({ amount: "invalid" }); expect(invalidQuantityFromString.isFailure).toBe(true); }); // Prueba la conversión a número. it("Should convert to number", () => { const quantity = Quantity.create({ amount: 7 }).object; const result = quantity.toNumber(); expect(result).toBe(7); }); // Prueba la conversión a cadena. it("Should convert to string", () => { const quantity = Quantity.create({ amount: 15 }).object; const result = quantity.toString(); expect(result).toBe("15"); }); // Prueba la operación de incremento. it("Should increment", () => { const quantity = Quantity.create({ amount: 5 }).object; const incrementedQuantity = quantity.increment().object; expect(incrementedQuantity.toNumber()).toBe(6); }); it("Should increment quantity", () => { const firstQ = Quantity.create({ amount: -5 }).object; const secountQ = Quantity.create({ amount: 105 }).object; const incrementedQuantity = firstQ.increment(secountQ).object; expect(incrementedQuantity.toNumber()).toBe(100); }); // Prueba la operación de decremento. it("Should decrement", () => { const quantity = Quantity.create({ amount: 0 }).object; const decrementedQuantity = quantity.decrement().object; expect(decrementedQuantity.toNumber()).toBe(-1); }); // Prueba la operación de decremento. it("Should decrement quantity", () => { const quantity = Quantity.create({ amount: 10 }).object; const decrementedQuantity = quantity.decrement(Quantity.create({ amount: 110 }).object).object; expect(decrementedQuantity.toNumber()).toBe(-100); }); });