[#15] feat: 카페 메뉴 관련 JPA 수행 테스트
- 카페 메뉴 관련 JPA 수행 테스트 - JPA update시 dynamic update 기능 적용 테스트(추후 변경)
This commit is contained in:
@@ -7,9 +7,9 @@ import org.hibernate.annotations.DynamicUpdate
|
||||
import java.math.BigDecimal
|
||||
import javax.persistence.*
|
||||
|
||||
@DynamicUpdate
|
||||
@Entity
|
||||
@Table(name = "cafe_menu")
|
||||
@DynamicUpdate
|
||||
class CafeMenu protected constructor(
|
||||
name: String,
|
||||
price: BigDecimal,
|
||||
|
||||
@@ -2,8 +2,10 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity
|
||||
|
||||
import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity
|
||||
import io.beaniejoy.dongnecafe.domain.cafe.model.request.OptionDetailRegisterRequest
|
||||
import org.hibernate.annotations.DynamicUpdate
|
||||
import javax.persistence.*
|
||||
|
||||
@DynamicUpdate
|
||||
@Entity
|
||||
@Table(name = "menu_option")
|
||||
class MenuOption protected constructor(
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package io.beaniejoy.dongnecafe.domain.cafe.entity
|
||||
|
||||
import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity
|
||||
import org.hibernate.annotations.DynamicUpdate
|
||||
import java.math.BigDecimal
|
||||
import javax.persistence.*
|
||||
|
||||
@DynamicUpdate
|
||||
@Entity
|
||||
@Table(name = "option_detail")
|
||||
class OptionDetail protected constructor(
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package io.beaniejoy.dongnecafe.domain.cafe.service
|
||||
|
||||
import io.beaniejoy.dongnecafe.domain.cafe.model.request.*
|
||||
import io.beaniejoy.dongnecafe.domain.cafe.utils.CafeTestUtils
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import java.math.BigDecimal
|
||||
|
||||
@SpringBootTest
|
||||
class CafeMenuServiceIntegratedTest {
|
||||
@Autowired
|
||||
lateinit var cafeService: CafeService
|
||||
|
||||
@Autowired
|
||||
lateinit var cafeMenuService: CafeMenuService
|
||||
|
||||
@Test
|
||||
fun update_info_and_bulk_update_menu_options() {
|
||||
val cafeRegisterRequest = CafeTestUtils.createCafeRegisterRequest()
|
||||
|
||||
val savedCafeId = cafeService.createNew(
|
||||
name = cafeRegisterRequest.name!!,
|
||||
address = cafeRegisterRequest.address!!,
|
||||
phoneNumber = cafeRegisterRequest.phoneNumber!!,
|
||||
description = cafeRegisterRequest.description!!,
|
||||
cafeMenuRequestList = cafeRegisterRequest.cafeMenuList
|
||||
)
|
||||
|
||||
val cafeDetailedInfo = cafeService.getDetailedInfoByCafeId(savedCafeId)
|
||||
|
||||
val cafeMenuUpdateRequest = cafeMenuService.getDetailedInfoByMenuId(
|
||||
menuId = cafeDetailedInfo.menuList[0].cafeMenuId,
|
||||
cafeId = cafeDetailedInfo.cafeId
|
||||
).let {
|
||||
CafeMenuUpdateRequest(
|
||||
name = "menu2 update",
|
||||
price = it.price,
|
||||
menuOptionList = listOf(it.optionList[1].let { menuOption ->
|
||||
MenuOptionUpdateRequest(
|
||||
menuOptionId = menuOption.menuOptionId,
|
||||
title = "샷 update",
|
||||
optionDetailList = menuOption.optionDetailList.mapIndexed { index, optionDetail ->
|
||||
OptionDetailUpdateRequest(
|
||||
optionDetailId = optionDetail.optionDetailId,
|
||||
name = optionDetail.name!!,
|
||||
extraPrice = BigDecimal("${index}000"),
|
||||
isDelete = index == 0
|
||||
)
|
||||
}
|
||||
)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
cafeMenuService.updateInfoAndBulkUpdate(
|
||||
menuId = cafeDetailedInfo.menuList[1].cafeMenuId,
|
||||
cafeId = cafeDetailedInfo.cafeId,
|
||||
resource = cafeMenuUpdateRequest
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -38,9 +38,6 @@ internal class CafeMenuServiceTest {
|
||||
@InjectMocks
|
||||
lateinit var mockCafeMenuService: CafeMenuService
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
@DisplayName("카페 메뉴 ID를 통한 카페 메뉴 상세 조회")
|
||||
fun find_cafe_menu_by_cafe_menu_id() {
|
||||
|
||||
@@ -97,9 +97,9 @@ internal class CafeServiceTest {
|
||||
)
|
||||
val cafeId = 50L
|
||||
|
||||
// TODO findByIdOrNull은 kotlin test 라이브러리 필요한 듯
|
||||
// TODO 'findByIdOrNull'은 kotlin test 라이브러리 필요한 듯
|
||||
val mockCafe = mock(Cafe::class.java)
|
||||
`when`(mockCafeRepository.findById(cafeId)).thenReturn(Optional.of(mockCafe))
|
||||
doReturn(Optional.of(cafe)).`when`(mockCafeRepository.findById(eq(cafeId)))
|
||||
|
||||
doNothing().`when`(mockCafe).updateInfo(
|
||||
name = anyString(),
|
||||
@@ -110,7 +110,7 @@ internal class CafeServiceTest {
|
||||
|
||||
// when
|
||||
mockCafeService.updateInfo(
|
||||
id = cafeId,
|
||||
id = eq(cafeId),
|
||||
name = "updated_name",
|
||||
address = "updated_address",
|
||||
phoneNumber = "updated_phoneNumber",
|
||||
|
||||
@@ -19,23 +19,33 @@ class CafeMenuTestUtils {
|
||||
fun createCafeMenuRegisterRequestList(): List<CafeMenuRegisterRequest> {
|
||||
val sizeOptionDetailList = listOf(
|
||||
OptionDetailRegisterRequest(name = "medium", extraPrice = BigDecimal.ZERO),
|
||||
OptionDetailRegisterRequest(name = "large", extraPrice = BigDecimal.valueOf(200L)),
|
||||
OptionDetailRegisterRequest(name = "venti", extraPrice = BigDecimal.valueOf(700L))
|
||||
OptionDetailRegisterRequest(name = "large", extraPrice = BigDecimal("200")),
|
||||
OptionDetailRegisterRequest(name = "venti", extraPrice = BigDecimal("700"))
|
||||
)
|
||||
val shotOptionDetailList = listOf(
|
||||
OptionDetailRegisterRequest(name = "기본", extraPrice = BigDecimal.ZERO),
|
||||
OptionDetailRegisterRequest(name = "샷 1 추가", extraPrice = BigDecimal("500")),
|
||||
OptionDetailRegisterRequest(name = "샷 2 추가", extraPrice = BigDecimal("1000")),
|
||||
)
|
||||
|
||||
val sizeMenuOption = MenuOptionRegisterRequest(
|
||||
title = "size",
|
||||
title = "사이즈",
|
||||
optionDetailList = sizeOptionDetailList
|
||||
)
|
||||
val shotMenuOption = MenuOptionRegisterRequest(
|
||||
title = "샷",
|
||||
optionDetailList = shotOptionDetailList
|
||||
)
|
||||
|
||||
return listOf(
|
||||
CafeMenuRegisterRequest(
|
||||
name = "menu1",
|
||||
price = BigDecimal.valueOf(2_800L),
|
||||
menuOptionList = listOf(sizeMenuOption)
|
||||
price = BigDecimal("2800"),
|
||||
menuOptionList = listOf(sizeMenuOption, shotMenuOption)
|
||||
),
|
||||
CafeMenuRegisterRequest(
|
||||
name = "menu2",
|
||||
price = BigDecimal.valueOf(3_500L),
|
||||
price = BigDecimal("3500"),
|
||||
menuOptionList = listOf(sizeMenuOption)
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user