Skip to content

Commit

Permalink
fix: 봉달 상품 제거시 단일 제거 방식으로 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
TaeyeonRoyce committed Jan 31, 2024
1 parent 68a6fa0 commit cd0a8d5
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.petqua.application.cart

import com.petqua.application.cart.dto.DeleteCartProductsCommand
import com.petqua.application.cart.dto.DeleteCartProductCommand
import com.petqua.application.cart.dto.SaveCartProductCommand
import com.petqua.application.cart.dto.UpdateCartProductOptionCommand
import com.petqua.common.domain.existByIdOrThrow
Expand Down Expand Up @@ -68,13 +68,12 @@ class CartProductService(
)?.also { throw CartProductException(DUPLICATED_PRODUCT) }
}

fun delete(command: DeleteCartProductsCommand) {
val cartProducts = cartProductRepository.findAllByIdIn(command.cartProductIds)
if (command.cartProductIds.size != cartProducts.size) {
throw CartProductException(NOT_FOUND_CART_PRODUCT)
}

cartProducts.forEach { it.validateOwner(command.memberId) }
cartProductRepository.deleteAll(cartProducts)
fun delete(command: DeleteCartProductCommand) {
val cartProduct = cartProductRepository.findByIdOrThrow(
command.cartProductId,
CartProductException(NOT_FOUND_CART_PRODUCT)
)
cartProduct.validateOwner(command.memberId)
cartProductRepository.delete(cartProduct)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ data class UpdateCartProductOptionCommand(
val deliveryMethod: DeliveryMethod,
)

data class DeleteCartProductsCommand(
data class DeleteCartProductCommand(
val memberId: Long,
val cartProductIds: List<Long>,
val cartProductId: Long,
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.petqua.application.cart.CartProductService
import com.petqua.application.product.dto.ProductDetailResponse
import com.petqua.domain.auth.Auth
import com.petqua.domain.auth.LoginMember
import com.petqua.presentation.cart.dto.DeleteCartProductsRequest
import com.petqua.presentation.cart.dto.DeleteCartProductRequest
import com.petqua.presentation.cart.dto.SaveCartProductRequest
import com.petqua.presentation.cart.dto.UpdateCartProductOptionRequest
import org.springframework.http.ResponseEntity
Expand Down Expand Up @@ -51,7 +51,7 @@ class CartProductController(
@DeleteMapping("/items")
fun delete(
@Auth loginMember: LoginMember,
@RequestBody request: DeleteCartProductsRequest
@RequestBody request: DeleteCartProductRequest
): ResponseEntity<Void> {
val command = request.toCommand(loginMember.memberId)
cartProductService.delete(command)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.petqua.presentation.cart.dto

import com.petqua.application.cart.dto.DeleteCartProductsCommand
import com.petqua.application.cart.dto.DeleteCartProductCommand
import com.petqua.application.cart.dto.SaveCartProductCommand
import com.petqua.application.cart.dto.UpdateCartProductOptionCommand
import com.petqua.domain.cart.CartProductQuantity
Expand Down Expand Up @@ -41,14 +41,14 @@ data class UpdateCartProductOptionRequest(
}
}

data class DeleteCartProductsRequest(
val cartProductIds: List<Long>,
data class DeleteCartProductRequest(
val cartProductId: Long
) {

fun toCommand(memberId: Long): DeleteCartProductsCommand {
return DeleteCartProductsCommand(
fun toCommand(memberId: Long): DeleteCartProductCommand {
return DeleteCartProductCommand(
memberId = memberId,
cartProductIds = cartProductIds,
cartProductId = cartProductId,
)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.petqua.application.cart

import com.petqua.application.cart.dto.DeleteCartProductsCommand
import com.petqua.application.cart.dto.DeleteCartProductCommand
import com.petqua.application.cart.dto.SaveCartProductCommand
import com.petqua.application.cart.dto.UpdateCartProductOptionCommand
import com.petqua.common.domain.findByIdOrThrow
Expand Down Expand Up @@ -204,9 +204,9 @@ class CartProductServiceTest(
)

When("봉달 상품을") {
DeleteCartProductsCommand(
DeleteCartProductCommand(
memberId = memberId,
cartProductIds = listOf(cartProduct.id)
cartProductId = cartProduct.id
).let(cartProductService::delete)

Then("삭제할 수 있다") {
Expand All @@ -227,9 +227,9 @@ class CartProductServiceTest(
)

When("존재 하지 않는 장바구니 상품에 삭제 요청 하는 경우") {
val command = DeleteCartProductsCommand(
val command = DeleteCartProductCommand(
memberId = memberId,
cartProductIds = listOf(Long.MIN_VALUE)
cartProductId = Long.MIN_VALUE
)
Then("예외가 발생 한다") {
shouldThrow<CartProductException> {
Expand All @@ -239,9 +239,9 @@ class CartProductServiceTest(
}

When("다른 회원이 장바구니 상품을 삭제 하는 경우") {
val command = DeleteCartProductsCommand(
val command = DeleteCartProductCommand(
memberId = Long.MIN_VALUE,
cartProductIds = listOf(cartProduct.id)
cartProductId = cartProduct.id
)
Then("예외가 발생 한다") {
shouldThrow<CartProductException> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.petqua.presentation.cart

import com.petqua.presentation.cart.dto.DeleteCartProductsRequest
import com.petqua.presentation.cart.dto.DeleteCartProductRequest
import com.petqua.presentation.cart.dto.SaveCartProductRequest
import com.petqua.presentation.cart.dto.UpdateCartProductOptionRequest
import io.restassured.module.kotlin.extensions.Extract
Expand Down Expand Up @@ -63,7 +63,7 @@ fun requestUpdateCartProductOption(
}

fun requestDeleteCartProduct(
request: DeleteCartProductsRequest,
request: DeleteCartProductRequest,
accessToken: String
): Response {
return Given {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import com.petqua.exception.cart.CartProductExceptionType.INVALID_DELIVERY_METHO
import com.petqua.exception.cart.CartProductExceptionType.NOT_FOUND_CART_PRODUCT
import com.petqua.exception.cart.CartProductExceptionType.PRODUCT_QUANTITY_OVER_MAXIMUM
import com.petqua.exception.product.ProductExceptionType.NOT_FOUND_PRODUCT
import com.petqua.presentation.cart.dto.DeleteCartProductsRequest
import com.petqua.presentation.cart.dto.DeleteCartProductRequest
import com.petqua.presentation.cart.dto.SaveCartProductRequest
import com.petqua.presentation.cart.dto.UpdateCartProductOptionRequest
import com.petqua.test.ApiTestConfig
Expand Down Expand Up @@ -276,15 +276,13 @@ class CartProductControllerTest(
}

Given("봉달 상품 삭제를") {
val productA = productRepository.save(product(id = 1L))
val productB = productRepository.save(product(id = 2L))
val product = productRepository.save(product(id = 1L))
val memberAuthResponse = signInAsMember()
val cartProductAId = saveCartProductAndReturnId(memberAuthResponse.accessToken, productA.id)
val cartProductBId = saveCartProductAndReturnId(memberAuthResponse.accessToken, productB.id)
val cartProductAId = saveCartProductAndReturnId(memberAuthResponse.accessToken, product.id)


When("요청 하면") {
val request = DeleteCartProductsRequest(listOf(cartProductAId, cartProductBId))
val request = DeleteCartProductRequest(cartProductAId)
val response = requestDeleteCartProduct(
request,
memberAuthResponse.accessToken
Expand All @@ -297,14 +295,12 @@ class CartProductControllerTest(
}

Given("봉달 상품 삭제시") {
val productA = productRepository.save(product(id = 1L))
val productB = productRepository.save(product(id = 2L))
val product = productRepository.save(product(id = 1L))
val memberAuthResponse = signInAsMember()
val cartProductAId = saveCartProductAndReturnId(memberAuthResponse.accessToken, productA.id)
val cartProductBId = saveCartProductAndReturnId(memberAuthResponse.accessToken, productB.id)
val cartProductAId = saveCartProductAndReturnId(memberAuthResponse.accessToken, product.id)

When("존재하지 않는 봉달 상품 삭제를 요청 하면") {
val request = DeleteCartProductsRequest(listOf(productA.id, 999L))
val request = DeleteCartProductRequest(Long.MIN_VALUE)
val response = requestDeleteCartProduct(
request,
memberAuthResponse.accessToken
Expand All @@ -321,7 +317,7 @@ class CartProductControllerTest(

When("다른 회원의 상품을 삭제 하면") {
val otherMemberResponse = signInAsMember()
val request = DeleteCartProductsRequest(listOf(cartProductAId, cartProductBId))
val request = DeleteCartProductRequest(cartProductAId)
val response = requestDeleteCartProduct(
request,
otherMemberResponse.accessToken
Expand Down

0 comments on commit cd0a8d5

Please sign in to comment.