From 29fbf13770611ad78ab55fd0453bb5bae8a2a55c Mon Sep 17 00:00:00 2001 From: Nour Eldien Ayman Date: Sun, 18 May 2025 22:58:02 +0300 Subject: [PATCH 1/3] fix: update event type from ORDER_PLACED to CART_CHECKEDOUT in checkout process --- .../java/com/podzilla/cart/service/CartService.java | 2 +- src/test/java/service/CartServiceTest.java | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/podzilla/cart/service/CartService.java b/src/main/java/com/podzilla/cart/service/CartService.java index a22a13a..84aa01f 100644 --- a/src/main/java/com/podzilla/cart/service/CartService.java +++ b/src/main/java/com/podzilla/cart/service/CartService.java @@ -294,7 +294,7 @@ public Cart checkoutCart(final String customerId, final ConfirmationType confirm + " Discount={}, Total={}, ConfirmationType={}", cart.getId(), cart.getSubTotal(), cart.getDiscountAmount(), cart.getTotalPrice(), confirmationType); - eventPublisher.publishEvent(EventsConstants.ORDER_PLACED, checkoutEvent); + eventPublisher.publishEvent(EventsConstants.CART_CHECKEDOUT, checkoutEvent); log.info("Checkout event published successfully for cartId: {}. Clearing cart.", cart.getId()); cart.getItems().clear(); diff --git a/src/test/java/service/CartServiceTest.java b/src/test/java/service/CartServiceTest.java index a31bd02..ff7d614 100644 --- a/src/test/java/service/CartServiceTest.java +++ b/src/test/java/service/CartServiceTest.java @@ -343,12 +343,12 @@ void checkoutCart_validCartWithPromo_publishesEventAndClearsCart() { PromoCode promo = createTestPromoCode("SAVE10", PromoCode.DiscountType.PERCENTAGE, new BigDecimal("10"), null, null, true); when(promoCodeService.getActivePromoCode("SAVE10")).thenReturn(Optional.of(promo)); - doNothing().when(eventPublisher).publishEvent(eq(EventsConstants.ORDER_PLACED), any(CartCheckedoutEvent.class)); + doNothing().when(eventPublisher).publishEvent(eq(EventsConstants.CART_CHECKEDOUT), any(CartCheckedoutEvent.class)); Cart result = cartService.checkoutCart(customerId, ConfirmationType.OTP, "", latitude, longitude, address); ArgumentCaptor eventCaptor = ArgumentCaptor.forClass(CartCheckedoutEvent.class); - verify(eventPublisher).publishEvent(eq(EventsConstants.ORDER_PLACED), eventCaptor.capture()); + verify(eventPublisher).publishEvent(eq(EventsConstants.CART_CHECKEDOUT), eventCaptor.capture()); CartCheckedoutEvent publishedEvent = eventCaptor.getValue(); assertEquals(customerId, publishedEvent.getCustomerId()); @@ -377,7 +377,7 @@ void checkoutCart_withSignature_publishesEventWithSignature() { Cart result = cartService.checkoutCart(customerId, ConfirmationType.SIGNATURE, signature, latitude, longitude, address); ArgumentCaptor eventCaptor = ArgumentCaptor.forClass(CartCheckedoutEvent.class); - verify(eventPublisher).publishEvent(eq(EventsConstants.ORDER_PLACED), eventCaptor.capture()); + verify(eventPublisher).publishEvent(eq(EventsConstants.CART_CHECKEDOUT), eventCaptor.capture()); CartCheckedoutEvent publishedEvent = eventCaptor.getValue(); assertEquals(ConfirmationType.SIGNATURE, publishedEvent.getConfirmationType()); @@ -393,7 +393,7 @@ void checkoutCart_signatureTypeWithoutSignature_throwsException() { assertEquals(HttpStatus.BAD_REQUEST, ex.getStatus()); assertEquals("Signature is required for SIGNATURE confirmation type", ex.getMessage()); -verify(eventPublisher, never()).publishEvent(eq(EventsConstants.ORDER_PLACED), any(CartCheckedoutEvent.class)); +verify(eventPublisher, never()).publishEvent(eq(EventsConstants.CART_CHECKEDOUT), any(CartCheckedoutEvent.class)); } @Test @@ -405,7 +405,7 @@ void checkoutCart_emptyCart_throwsGlobalHandlerException() { assertEquals(HttpStatus.BAD_REQUEST, ex.getStatus()); assertEquals("Cannot checkout an empty cart.", ex.getMessage()); -verify(eventPublisher, never()).publishEvent(eq(EventsConstants.ORDER_PLACED), any(CartCheckedoutEvent.class)); +verify(eventPublisher, never()).publishEvent(eq(EventsConstants.CART_CHECKEDOUT), any(CartCheckedoutEvent.class)); } @Test @@ -421,7 +421,7 @@ void checkoutCart_rabbitMqFails_throwsRuntimeExceptionAndCartNotCleared() { cart.setDiscountAmount(new BigDecimal(formattedBigZero)); doThrow(new RuntimeException("Event publish error")).when(eventPublisher) - .publishEvent(eq(EventsConstants.ORDER_PLACED), any(CartCheckedoutEvent.class)); + .publishEvent(eq(EventsConstants.CART_CHECKEDOUT), any(CartCheckedoutEvent.class)); RuntimeException ex = assertThrows(RuntimeException.class, () -> cartService.checkoutCart(customerId, ConfirmationType.QR_CODE, null, latitude, longitude, address)); From d1271038241cb8b08172642ae69f0cb2500ea1b3 Mon Sep 17 00:00:00 2001 From: Abdelrahman Elmeky <65960126+Aelmeky@users.noreply.github.com> Date: Mon, 19 May 2025 09:46:02 +0300 Subject: [PATCH 2/3] feat : only admin access promocodes endpoints --- .../java/com/podzilla/cart/controller/PromoCodeController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/podzilla/cart/controller/PromoCodeController.java b/src/main/java/com/podzilla/cart/controller/PromoCodeController.java index 1ff1bab..969545e 100644 --- a/src/main/java/com/podzilla/cart/controller/PromoCodeController.java +++ b/src/main/java/com/podzilla/cart/controller/PromoCodeController.java @@ -1,5 +1,6 @@ package com.podzilla.cart.controller; +import com.podzilla.auth.annotations.AllowedRoles; import com.podzilla.cart.model.PromoCode; import com.podzilla.cart.service.PromoCodeService; import io.swagger.v3.oas.annotations.Operation; @@ -22,6 +23,7 @@ @RestController @RequestMapping("/admin/promocodes") +@AllowedRoles({"ROLE_ADMIN"}) @RequiredArgsConstructor @Tag(name = "PromoCode Admin", description = "Manage promotional codes (Requires Admin Role)") @Slf4j From 8f69bffa10e9a1194ad9846374ac8ed5047131c0 Mon Sep 17 00:00:00 2001 From: Nour Eldien Ayman Date: Mon, 19 May 2025 17:55:22 +0300 Subject: [PATCH 3/3] fix: update podzilla-utils-lib version to v1.1.13 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index df316bc..9dc9700 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ com.github.Podzilla podzilla-utils-lib - 1.1.11 + v1.1.13