55import com .answerdigital .answerking .exception .custom .OrderCancelledException ;
66import com .answerdigital .answerking .exception .generic .NotFoundException ;
77import com .answerdigital .answerking .mapper .OrderMapper ;
8- import com .answerdigital .answerking .model .LineItem ;
98import com .answerdigital .answerking .model .Order ;
109import com .answerdigital .answerking .model .OrderStatus ;
1110import com .answerdigital .answerking .model .Product ;
2120import org .mockito .junit .jupiter .MockitoExtension ;
2221import org .springframework .test .context .ContextConfiguration ;
2322
24- import java .math .BigDecimal ;
2523import java .util .Collections ;
2624import java .util .HashSet ;
2725import java .util .List ;
2826import java .util .Optional ;
29- import java .util .Set ;
3027
3128import static org .junit .jupiter .api .Assertions .assertAll ;
3229import static org .junit .jupiter .api .Assertions .assertEquals ;
3330import static org .junit .jupiter .api .Assertions .assertFalse ;
34- import static org .junit .jupiter .api .Assertions .assertSame ;
3531import static org .junit .jupiter .api .Assertions .assertThrows ;
3632import static org .junit .jupiter .api .Assertions .assertTrue ;
3733import static org .mockito .ArgumentMatchers .anyLong ;
@@ -53,6 +49,7 @@ class OrderServiceTest {
5349 private OrderService orderService ;
5450
5551 private final OrderTestBuilder orderTestBuilder = new OrderTestBuilder ();
52+
5653 private final OrderRequestTestBuilder orderRequestTestBuilder = new OrderRequestTestBuilder ();
5754
5855 private final OrderMapper orderMapper = Mappers .getMapper (OrderMapper .class );
@@ -64,10 +61,10 @@ class OrderServiceTest {
6461 @ Test
6562 void testAddOrderWithNoProductsValidOrderRequestIsSuccessful () {
6663 // Given
67- Order order = orderTestBuilder
64+ final Order order = orderTestBuilder
6865 .withDefaultValues ()
6966 .build ();
70- OrderRequest orderRequest = orderRequestTestBuilder
67+ final OrderRequest orderRequest = orderRequestTestBuilder
7168 .withDefaultValues ()
7269 .build ();
7370
@@ -76,7 +73,7 @@ void testAddOrderWithNoProductsValidOrderRequestIsSuccessful() {
7673 .when (orderRepository )
7774 .save (any (Order .class ));
7875
79- OrderResponse response = orderService .addOrder (orderRequest );
76+ final OrderResponse response = orderService .addOrder (orderRequest );
8077
8178 // Then
8279 assertEquals (OrderStatus .CREATED , response .getOrderStatus ());
@@ -143,7 +140,7 @@ void testFindAllReturnsListOfOrders() {
143140 .when (orderRepository )
144141 .findAll ();
145142
146- List <OrderResponse > response = orderService .findAll ();
143+ final List <OrderResponse > response = orderService .findAll ();
147144
148145 // Then
149146 assertEquals (2 , response .size ());
@@ -154,15 +151,22 @@ void testFindAllReturnsListOfOrders() {
154151 @ Test
155152 void testUpdateOrder () {
156153 // Given
157- final Order originalOrder = new Order ();
158- final OrderRequest updateOrderRequest = new OrderRequest (List .of (new LineItemRequest (1L , 1 )));
154+ final Order originalOrder = orderTestBuilder .withDefaultValues ().build ();
155+ final OrderRequest updateOrderRequest = orderRequestTestBuilder
156+ .withLineItemRequests (List .of (new LineItemRequest (1L , 1 )))
157+ .build ();
159158 final Order expectedOrder = new Order ();
159+ final Product product = Product .builder ()
160+ .id (1L )
161+ .name ("burger" )
162+ .build ();
160163
161164 // When
162165 when (orderRepository .findById (anyLong ()))
163166 .thenReturn (Optional .of (originalOrder ));
164167 when (orderRepository .save (any (Order .class )))
165168 .thenReturn (expectedOrder );
169+ when (productService .findAllProductsInListOfIds (any ())).thenReturn (List .of (product ));
166170
167171 final OrderResponse response = orderService .updateOrder (ORDER_ID , updateOrderRequest );
168172
@@ -189,7 +193,7 @@ void testFindAllWithNoOrdersReturnsEmptyList() {
189193 .when (orderRepository )
190194 .findAll ();
191195
192- List <OrderResponse > response = orderService .findAll ();
196+ final List <OrderResponse > response = orderService .findAll ();
193197
194198 // When
195199 assertTrue (response .isEmpty ());
@@ -202,7 +206,7 @@ void testUpdateOrderWithInvalidOrderIdThrowsNotFoundException() {
202206 final Order order = Order .builder ()
203207 .lineItems (new HashSet <>())
204208 .build ();
205- OrderRequest orderRequest = orderRequestTestBuilder .withDefaultValues ().build ();
209+ final OrderRequest orderRequest = orderRequestTestBuilder .withDefaultValues ().build ();
206210
207211 // When
208212 doReturn (Optional .empty ())
@@ -217,83 +221,34 @@ void testUpdateOrderWithInvalidOrderIdThrowsNotFoundException() {
217221 @ Test
218222 void testUpdateOrderWithAlreadyCancelledOrderThrowsOrderCancelledException () {
219223 // Given
220- final Product product = Product .builder ()
221- .id (12L )
222- .name ("King Burger" )
223- .description ("A burger fit for a king" )
224- .price (new BigDecimal ("12.99" ))
225- .retired (false )
226- .build ();
227224 final Order order = orderTestBuilder
225+ .withDefaultValues ()
228226 .withOrderStatus (OrderStatus .CANCELLED )
229227 .build ();
230- OrderRequest orderRequest = orderRequestTestBuilder
231- .withDefaultValues ().
232- build ();
233-
234- // When
235- doReturn (Optional .of (order ))
236- .when (orderRepository )
237- .findById (anyLong ());
238-
239- // Then
240- assertThrows (OrderCancelledException .class , () -> orderService .updateOrder (order .getId (), orderRequest ));
241- verify (orderRepository ).findById (anyLong ());
242- }
243-
244- @ Test
245- void testCancelOrderWithValidOrderIdReturnsCancelledOrder () {
246- // Given
247- final Product product = Product .builder ()
248- .id (12L )
249- .build ();
250- Order order = orderTestBuilder
251- .withDefaultValues ()
252- .withOrderStatus (OrderStatus .CANCELLED )
253- .build ();
254-
255- final LineItem lineItem = LineItem .builder ()
256- .order (order )
257- .product (product )
258- .quantity (5 )
259- .build ();
260- order .getLineItems ().add (lineItem );
261-
262- final Order expectedResponse = Order .builder ()
263- .id (12L )
228+ final OrderRequest updateOrderRequest = orderRequestTestBuilder
229+ .withLineItemRequests (List .of (new LineItemRequest (1L , 1 )))
264230 .build ();
265231
266232 // When
267233 doReturn (Optional .of (order ))
268234 .when (orderRepository )
269235 .findById (anyLong ());
270- doReturn (order )
271- .when (orderRepository )
272- .save (any (Order .class ));
273-
274- OrderResponse response = orderService .cancelOrder (order .getId ());
275236
276237 // Then
277- assertEquals ( order . getOrderStatus (), response . getOrderStatus ( ));
238+ assertThrows ( OrderCancelledException . class , () -> orderService . updateOrder ( order . getId (), updateOrderRequest ));
278239 verify (orderRepository ).findById (anyLong ());
279- verify (orderRepository ).save (any (Order .class ));
280240 }
281241
282242 @ Test
283243 void testOrderToOrderResponseMapsSuccessfully () {
284244 // Given
285- final Product product = Product .builder ().build ();
286- final Order order = Order .builder ()
287- .lineItems (new HashSet <>())
288- .build ();
245+ final Order order = orderTestBuilder .withDefaultValues ().build ();
289246
290247 // When
291- when (orderRepository .findById (anyLong ()))
292- .thenReturn (Optional .of (order ));
293- when (productService .findById (anyLong ()))
294- .thenReturn (product );
295- OrderResponse orderResponse = orderMapper .orderToOrderResponse (order );
248+ final OrderResponse orderResponse = orderMapper .orderToOrderResponse (order );
296249
250+ System .out .println (orderResponse );
251+ System .out .println (order );
297252 // Then
298253 assertAll ("Should map successfully" ,
299254 () -> assertEquals (order .getId (), orderResponse .getId ()),
0 commit comments