From 0056c8406485008612eeb5d0f32967ac79d5ff90 Mon Sep 17 00:00:00 2001 From: Bank Date: Sat, 23 Mar 2024 16:04:08 +0700 Subject: [PATCH] add cart service and cart repository --- .../java/com/kampus/kbazaar/cart/Cart.java | 6 +++ .../kampus/kbazaar/cart/CartController.java | 42 ++++++++++--------- .../kampus/kbazaar/cart/CartRepository.java | 7 ++++ .../com/kampus/kbazaar/cart/CartService.java | 14 +++++++ .../kbazaar/cart/CartControllerTest.java | 4 +- 5 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 kbazaar/src/main/java/com/kampus/kbazaar/cart/CartRepository.java create mode 100644 kbazaar/src/main/java/com/kampus/kbazaar/cart/CartService.java diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/cart/Cart.java b/kbazaar/src/main/java/com/kampus/kbazaar/cart/Cart.java index 369d968..e761452 100644 --- a/kbazaar/src/main/java/com/kampus/kbazaar/cart/Cart.java +++ b/kbazaar/src/main/java/com/kampus/kbazaar/cart/Cart.java @@ -38,4 +38,10 @@ public class Cart { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "shopper_id", referencedColumnName = "id") private Shopper shopper; + + public Cart addProduct(Product product) { + this.products.add(product); + product.getCarts().add(this); + return this; + } } diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartController.java b/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartController.java index 0b0fb5c..13c0ce4 100644 --- a/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartController.java +++ b/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartController.java @@ -1,35 +1,39 @@ package com.kampus.kbazaar.cart; +import com.kampus.kbazaar.shopper.ShopperService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/v1") @RequiredArgsConstructor public class CartController { + private final ShopperService shopperService; + @GetMapping("/carts") public ResponseEntity getCart() { // NOSONAR return ResponseEntity.ok().build(); } - // @PostMapping("/carts/{username}/products") - // public ResponseEntity addProduct( - // @PathVariable("username") String username, - // @RequestBody AddProductRequest addProductRequest) { - // - // Product product = productService.getProductBySku(addProductRequest.getProductSku()); - // if (product.getQuantity() < addProductRequest.getQuantity()) { - // return ResponseEntity.badRequest().build(); - // } - // - // // return ResponseEntity.ok(cartService - // // .findCartByUsername(username)); - // // .addProduct(product) - // // .toAddProductResponse()); - // return ResponseEntity.ok().build(); - // } + @PostMapping("/carts/{username}/products") + public ResponseEntity addProduct( + @PathVariable("username") String username, + @RequestBody AddProductRequest addProductRequest) { + + // Cart cart = cartService.findCartByUsername(username); + // Product product = + // productService.getProductBySku(addProductRequest.getProductSku()); + // if (product.getQuantity() < addProductRequest.getQuantity()) { + // return ResponseEntity.badRequest().build(); + // } + + // return ResponseEntity.ok(cartService + // .findCartByUsername(username)); + // .addProduct(product) + // .toAddProductResponse()); + + return ResponseEntity.ok("hey"); + } } diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartRepository.java b/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartRepository.java new file mode 100644 index 0000000..7e5c034 --- /dev/null +++ b/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartRepository.java @@ -0,0 +1,7 @@ +package com.kampus.kbazaar.cart; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface CartRepository extends JpaRepository {} diff --git a/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartService.java b/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartService.java new file mode 100644 index 0000000..33aab4f --- /dev/null +++ b/kbazaar/src/main/java/com/kampus/kbazaar/cart/CartService.java @@ -0,0 +1,14 @@ +package com.kampus.kbazaar.cart; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CartService { + private final CartRepository cartRepository; + + public Cart findCartByUsername(String username) { + return null; + } +} diff --git a/kbazaar/src/test/java/com/kampus/kbazaar/cart/CartControllerTest.java b/kbazaar/src/test/java/com/kampus/kbazaar/cart/CartControllerTest.java index 6dabb17..ed8e5a5 100644 --- a/kbazaar/src/test/java/com/kampus/kbazaar/cart/CartControllerTest.java +++ b/kbazaar/src/test/java/com/kampus/kbazaar/cart/CartControllerTest.java @@ -9,10 +9,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.FilterType; import org.springframework.http.MediaType; @@ -31,7 +31,7 @@ public class CartControllerTest { @Autowired private MockMvc mockMvc; - @Mock private ShopperService shopperService; + @MockBean private ShopperService shopperService; @InjectMocks private CartController cartController;