From b3d43d26b849235bf7f1066f32d1de1a7e6332cb Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Tue, 9 Aug 2022 00:23:47 +0900 Subject: [PATCH] =?UTF-8?q?[#8]=20modify:=20Cafe=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - p6spy 모듈 제거 - CafeRepositoryTest BaseTimeEntity auditing 이슈 해결 - CafeTestUtils로 공통 함수 관리 - application.yml 설정 변경(주로 logging 관련) --- .gitignore | 5 +- build.gradle | 1 - src/main/resources/application.yml | 9 +-- .../dongnecafe/domain/cafe/entity/CafeTest.kt | 46 +------------- .../cafe/repository/CafeRepositoryTest.kt | 62 +++++-------------- .../domain/cafe/service/CafeServiceTest.kt | 58 +++-------------- .../domain/cafe/utils/CafeTestUtils.kt | 44 ++++++++++++- src/test/resources/application.yml | 9 ++- 8 files changed, 78 insertions(+), 156 deletions(-) diff --git a/.gitignore b/.gitignore index 441f28a..c426c32 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,4 @@ out/ /.nb-gradle/ ### VS Code ### -.vscode/ - -### log ### -*.log \ No newline at end of file +.vscode/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index db7a23b..0352f7f 100644 --- a/build.gradle +++ b/build.gradle @@ -63,7 +63,6 @@ dependencies { runtimeOnly 'com.h2database:h2' // H2 implementation "org.flywaydb:flyway-core:${flywayVersion}" // flyway - implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0") // query logging testImplementation 'org.springframework.boot:spring-boot-starter-test' } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a926d97..e3e2509 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -11,7 +11,7 @@ spring: hibernate: dialect: org.hibernate.dialect.MySQL5InnoDBDialect format_sql: true -# show-sql: true + show-sql: false flyway: baseline-on-migrate: true locations: classpath:db/migration,classpath:db/seed @@ -20,9 +20,4 @@ spring: logging: level: org.hibernate.SQL: debug # logger 통해 로깅 - org.hibernate.type: trace - -decorator: - datasource: - p6spy: - enable-logging: false # "p6spy": only for testing +# org.hibernate.type: trace diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt index 534a740..f3d6628 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt +++ b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt @@ -1,18 +1,12 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.CafeInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.CafeMenuInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.MenuOptionInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.OptionDetailInfoRequestDto import io.beaniejoy.dongnecafe.domain.cafe.utils.CafeTestUtils -import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test -import java.math.BigDecimal internal class CafeTest { @Test fun create_cafe_test() { - val cafeRequestDto = createCreateCafeRequestDto() + val cafeRequestDto = CafeTestUtils.createCafeRequestDto() val cafe = Cafe.createCafe( name = cafeRequestDto.name!!, @@ -24,42 +18,4 @@ internal class CafeTest { CafeTestUtils.assertCafeEquals(request = cafeRequestDto, entity = cafe) } - - private fun createCreateCafeRequestDto(): CafeInfoRequestDto { - val cafeName = "beanie_cafe" - val cafeAddress = "beanie_cafe_address" - val phoneNumber = "01012345678" - val description = "beanie_cafe_description" - - val sizeOptionDetailList = listOf( - OptionDetailInfoRequestDto(name = "medium", extraPrice = BigDecimal.ZERO), - OptionDetailInfoRequestDto(name = "large", extraPrice = BigDecimal.valueOf(200L)), - OptionDetailInfoRequestDto(name = "venti", extraPrice = BigDecimal.valueOf(700L)) - ) - val sizeMenuOption = MenuOptionInfoRequestDto( - title = "size", - optionDetailList = sizeOptionDetailList - ) - - val cafeMenuList = listOf( - CafeMenuInfoRequestDto( - name = "menu1", - price = BigDecimal.valueOf(2_800L), - menuOptionList = listOf(sizeMenuOption) - ), - CafeMenuInfoRequestDto( - name = "menu2", - price = BigDecimal.valueOf(3_500L), - menuOptionList = listOf(sizeMenuOption) - ), - ) - - return CafeInfoRequestDto( - name = cafeName, - address = cafeAddress, - phoneNumber = phoneNumber, - description = description, - cafeMenuList = cafeMenuList - ) - } } \ No newline at end of file diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt index 58d6d0e..17fd8b9 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt +++ b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt @@ -1,9 +1,7 @@ package io.beaniejoy.dongnecafe.domain.cafe.repository -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.CafeInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.CafeMenuInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.MenuOptionInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.OptionDetailInfoRequestDto +import io.beaniejoy.dongnecafe.common.config.AuditingConfig +import io.beaniejoy.dongnecafe.common.entity.BaseEntityAuditorAware import io.beaniejoy.dongnecafe.domain.cafe.entity.Cafe import io.beaniejoy.dongnecafe.domain.cafe.utils.CafeTestUtils import org.junit.jupiter.api.Assertions.assertEquals @@ -11,9 +9,21 @@ import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest -import java.math.BigDecimal +import org.springframework.context.annotation.ComponentScan +import org.springframework.context.annotation.FilterType -@DataJpaTest +@DataJpaTest( + includeFilters = [ + ComponentScan.Filter( + type = FilterType.ASSIGNABLE_TYPE, + classes = [AuditingConfig::class] + ), + ComponentScan.Filter( + type = FilterType.ASSIGNABLE_TYPE, + classes = [BaseEntityAuditorAware::class] + ) + ] +) internal class CafeRepositoryTest { @Autowired lateinit var cafeRepository: CafeRepository @@ -21,7 +31,7 @@ internal class CafeRepositoryTest { @Test @DisplayName("[JPA] 신규 Cafe 저장 테스트") fun saveTest() { - val cafeRequestDto = createCreateCafeRequestDto() + val cafeRequestDto = CafeTestUtils.createCafeRequestDto() val cafe = cafeRequestDto.let { Cafe.createCafe( name = it.name!!, @@ -37,42 +47,4 @@ internal class CafeRepositoryTest { assertEquals(1L, savedCafe.id) CafeTestUtils.assertCafeEquals(cafeRequestDto, savedCafe) } - - private fun createCreateCafeRequestDto(): CafeInfoRequestDto { - val cafeName = "beanie_cafe" - val cafeAddress = "beanie_cafe_address" - val phoneNumber = "01012345678" - val description = "beanie_cafe_description" - - val sizeOptionDetailList = listOf( - OptionDetailInfoRequestDto(name = "medium", extraPrice = BigDecimal.ZERO), - OptionDetailInfoRequestDto(name = "large", extraPrice = BigDecimal.valueOf(200L)), - OptionDetailInfoRequestDto(name = "venti", extraPrice = BigDecimal.valueOf(700L)) - ) - val sizeMenuOption = MenuOptionInfoRequestDto( - title = "size", - optionDetailList = sizeOptionDetailList - ) - - val cafeMenuList = listOf( - CafeMenuInfoRequestDto( - name = "menu1", - price = BigDecimal.valueOf(2_800L), - menuOptionList = listOf(sizeMenuOption) - ), - CafeMenuInfoRequestDto( - name = "menu2", - price = BigDecimal.valueOf(3_500L), - menuOptionList = listOf(sizeMenuOption) - ), - ) - - return CafeInfoRequestDto( - name = cafeName, - address = cafeAddress, - phoneNumber = phoneNumber, - description = description, - cafeMenuList = cafeMenuList - ) - } } \ No newline at end of file diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt index e9a4d81..9cb91c7 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt +++ b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt @@ -1,25 +1,17 @@ package io.beaniejoy.dongnecafe.domain.cafe.service -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.CafeInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.CafeMenuInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.MenuOptionInfoRequestDto -import io.beaniejoy.dongnecafe.domain.cafe.dto.request.OptionDetailInfoRequestDto import io.beaniejoy.dongnecafe.domain.cafe.entity.Cafe import io.beaniejoy.dongnecafe.domain.cafe.error.CafeExistedException import io.beaniejoy.dongnecafe.domain.cafe.error.CafeNotFoundException import io.beaniejoy.dongnecafe.domain.cafe.repository.CafeRepository +import io.beaniejoy.dongnecafe.domain.cafe.utils.CafeTestUtils +import org.junit.jupiter.api.* import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.DisplayName -import org.junit.jupiter.api.MethodOrderer -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.TestMethodOrder -import org.junit.jupiter.api.assertThrows import org.junit.jupiter.api.extension.ExtendWith import org.mockito.InjectMocks import org.mockito.Mock import org.mockito.Mockito.* import org.mockito.junit.jupiter.MockitoExtension -import java.math.BigDecimal import java.util.* import javax.persistence.GeneratedValue @@ -36,7 +28,7 @@ internal class CafeServiceTest { @DisplayName("카페 신규 생성 테스트") fun create_cafe_test() { // given - val cafeRequestDto = createCreateCafeRequestDto() + val cafeRequestDto = CafeTestUtils.createCafeRequestDto() val savedMockCafeId = 100L `when`(mockCafeRepository.findByName(cafeRequestDto.name!!)).thenReturn(null) @@ -64,7 +56,7 @@ internal class CafeServiceTest { @DisplayName("카페 신규 생성시 이미 존재하는 카페 예외 발생 테스트") fun fail_create_cafe_when_existed() { // given - val cafeRequestDto = createCreateCafeRequestDto() + val cafeRequestDto = CafeTestUtils.createCafeRequestDto() val cafe = Cafe.createCafe( name = cafeRequestDto.name!!, address = cafeRequestDto.address!!, @@ -86,13 +78,15 @@ internal class CafeServiceTest { cafeMenuRequestList = cafeRequestDto.cafeMenuList ) } + + verify(mockCafeRepository).findByName(cafeRequestDto.name!!) } @Test @DisplayName("카페 정보 변경 테스트") fun update_cafe_test() { // given - val cafeRequestDto = createCreateCafeRequestDto() + val cafeRequestDto = CafeTestUtils.createCafeRequestDto() val cafe = Cafe.createCafe( name = cafeRequestDto.name!!, address = cafeRequestDto.address!!, @@ -138,44 +132,6 @@ internal class CafeServiceTest { } } - private fun createCreateCafeRequestDto(): CafeInfoRequestDto { - val cafeName = "beanie_cafe" - val cafeAddress = "beanie_cafe_address" - val phoneNumber = "01012345678" - val description = "beanie_cafe_description" - - val sizeOptionDetailList = listOf( - OptionDetailInfoRequestDto(name = "medium", extraPrice = BigDecimal.ZERO), - OptionDetailInfoRequestDto(name = "large", extraPrice = BigDecimal.valueOf(200L)), - OptionDetailInfoRequestDto(name = "venti", extraPrice = BigDecimal.valueOf(700L)) - ) - val sizeMenuOption = MenuOptionInfoRequestDto( - title = "size", - optionDetailList = sizeOptionDetailList - ) - - val cafeMenuList = listOf( - CafeMenuInfoRequestDto( - name = "menu1", - price = BigDecimal.valueOf(2_800L), - menuOptionList = listOf(sizeMenuOption) - ), - CafeMenuInfoRequestDto( - name = "menu2", - price = BigDecimal.valueOf(3_500L), - menuOptionList = listOf(sizeMenuOption) - ), - ) - - return CafeInfoRequestDto( - name = cafeName, - address = cafeAddress, - phoneNumber = phoneNumber, - description = description, - cafeMenuList = cafeMenuList - ) - } - private fun injectCafeId( cafe: Cafe, newCafeId: Long, diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt index 3bbf8d9..7e17bb6 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt +++ b/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt @@ -9,6 +9,7 @@ import io.beaniejoy.dongnecafe.domain.cafe.entity.CafeMenu import io.beaniejoy.dongnecafe.domain.cafe.entity.MenuOption import io.beaniejoy.dongnecafe.domain.cafe.entity.OptionDetail import org.junit.jupiter.api.Assertions +import java.math.BigDecimal class CafeTestUtils { companion object { @@ -29,7 +30,10 @@ class CafeTestUtils { Assertions.assertEquals(cafeMenuRequestList[index].name, cafeMenuList[index].name) Assertions.assertEquals(cafeMenuRequestList[index].price, cafeMenuList[index].price) - assertMenuOptionListEquals(cafeMenuRequestList[index].menuOptionList, cafeMenuList[index].menuOptionList) + assertMenuOptionListEquals( + cafeMenuRequestList[index].menuOptionList, + cafeMenuList[index].menuOptionList + ) } } @@ -57,5 +61,43 @@ class CafeTestUtils { } } + + fun createCafeRequestDto(): CafeInfoRequestDto { + val cafeName = "beanie_cafe" + val cafeAddress = "beanie_cafe_address" + val phoneNumber = "01012345678" + val description = "beanie_cafe_description" + + val sizeOptionDetailList = listOf( + OptionDetailInfoRequestDto(name = "medium", extraPrice = BigDecimal.ZERO), + OptionDetailInfoRequestDto(name = "large", extraPrice = BigDecimal.valueOf(200L)), + OptionDetailInfoRequestDto(name = "venti", extraPrice = BigDecimal.valueOf(700L)) + ) + val sizeMenuOption = MenuOptionInfoRequestDto( + title = "size", + optionDetailList = sizeOptionDetailList + ) + + val cafeMenuList = listOf( + CafeMenuInfoRequestDto( + name = "menu1", + price = BigDecimal.valueOf(2_800L), + menuOptionList = listOf(sizeMenuOption) + ), + CafeMenuInfoRequestDto( + name = "menu2", + price = BigDecimal.valueOf(3_500L), + menuOptionList = listOf(sizeMenuOption) + ), + ) + + return CafeInfoRequestDto( + name = cafeName, + address = cafeAddress, + phoneNumber = phoneNumber, + description = description, + cafeMenuList = cafeMenuList + ) + } } } \ No newline at end of file diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index 8852c16..dc94f3f 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -1,8 +1,13 @@ spring: flyway: enabled: false + jpa: + properties: + hibernate: + format_sql: true + show_sql: false logging: level: - org.hibernate.SQL: debug # logger 통해 로깅 - org.hibernate.type: trace + org.hibernate.SQL: debug + org.hibernate.type: trace \ No newline at end of file