diff --git a/ddd/src/main/java/com/baeldung/ddd/layers/domain/Order.java b/ddd/src/main/java/com/baeldung/ddd/layers/domain/Order.java index 99ad09b2e3..369f860bae 100644 --- a/ddd/src/main/java/com/baeldung/ddd/layers/domain/Order.java +++ b/ddd/src/main/java/com/baeldung/ddd/layers/domain/Order.java @@ -45,8 +45,7 @@ public class Order { return orderItems .stream() .filter(orderItem -> orderItem - .getProduct() - .getId() + .getProductId() .equals(id)) .findFirst() .orElseThrow(() -> new DomainException("Product with " + id + " doesn't exist.")); diff --git a/ddd/src/main/java/com/baeldung/ddd/layers/domain/OrderItem.java b/ddd/src/main/java/com/baeldung/ddd/layers/domain/OrderItem.java index 06b8bd69f4..703a512ea2 100644 --- a/ddd/src/main/java/com/baeldung/ddd/layers/domain/OrderItem.java +++ b/ddd/src/main/java/com/baeldung/ddd/layers/domain/OrderItem.java @@ -2,20 +2,23 @@ package com.baeldung.ddd.layers.domain; import java.math.BigDecimal; import java.util.Objects; +import java.util.UUID; public class OrderItem { - private final Product product; + private final UUID productId; + private final BigDecimal price; public OrderItem(final Product product) { - this.product = product; + this.productId = product.getId(); + this.price = product.getPrice(); + } + + public UUID getProductId() { + return productId; } public BigDecimal getPrice() { - return product.getPrice(); - } - - public Product getProduct() { - return product; + return price; } @Override @@ -23,11 +26,11 @@ public class OrderItem { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; OrderItem orderItem = (OrderItem) o; - return Objects.equals(product, orderItem.product); + return Objects.equals(productId, orderItem.productId) && Objects.equals(price, orderItem.price); } @Override public int hashCode() { - return Objects.hash(product); + return Objects.hash(productId, price); } } diff --git a/ddd/src/test/java/com/baeldung/ddd/layers/domain/OrderUnitTest.java b/ddd/src/test/java/com/baeldung/ddd/layers/domain/OrderUnitTest.java index 48c55769ab..086624bf77 100644 --- a/ddd/src/test/java/com/baeldung/ddd/layers/domain/OrderUnitTest.java +++ b/ddd/src/test/java/com/baeldung/ddd/layers/domain/OrderUnitTest.java @@ -50,12 +50,12 @@ class OrderUnitTest { @Test void shouldRemoveProduct_thenUpdatePrice() { final Order order = OrderProvider.getCreatedOrder(); - - order.removeOrder(order + final UUID productId = order .getOrderItems() .get(0) - .getProduct() - .getId()); + .getProductId(); + + order.removeOrder(productId); assertEquals(0, order .getOrderItems() diff --git a/ddd/src/test/java/com/baeldung/ddd/layers/domain/service/DomainOrderServiceUnitTest.java b/ddd/src/test/java/com/baeldung/ddd/layers/domain/service/DomainOrderServiceUnitTest.java index 572afada00..a9e967229d 100644 --- a/ddd/src/test/java/com/baeldung/ddd/layers/domain/service/DomainOrderServiceUnitTest.java +++ b/ddd/src/test/java/com/baeldung/ddd/layers/domain/service/DomainOrderServiceUnitTest.java @@ -80,8 +80,8 @@ class DomainOrderServiceUnitTest { final UUID productId = order .getOrderItems() .get(0) - .getProduct() - .getId(); + .getProductId(); + when(orderRepository.findById(order.getId())).thenReturn(Optional.of(order)); tested.deleteProduct(order.getId(), productId);