generated from pricelees/issue-pr-template
[#30] 코드 구조 개선 #31
@ -1,15 +1,19 @@
|
|||||||
package roomescape.member.controller
|
package roomescape.member.controller
|
||||||
|
|
||||||
|
import com.ninjasquad.springmockk.MockkBean
|
||||||
|
import com.ninjasquad.springmockk.SpykBean
|
||||||
import io.kotest.assertions.assertSoftly
|
import io.kotest.assertions.assertSoftly
|
||||||
import io.kotest.matchers.collections.shouldContainAll
|
import io.kotest.matchers.collections.shouldContainAll
|
||||||
import io.kotest.matchers.shouldBe
|
import io.kotest.matchers.shouldBe
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
|
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
|
||||||
import org.springframework.test.web.servlet.MockMvc
|
import org.springframework.test.web.servlet.MockMvc
|
||||||
import roomescape.auth.exception.AuthErrorCode
|
import roomescape.auth.exception.AuthErrorCode
|
||||||
|
import roomescape.member.business.MemberService
|
||||||
import roomescape.member.exception.MemberErrorCode
|
import roomescape.member.exception.MemberErrorCode
|
||||||
|
import roomescape.member.exception.MemberException
|
||||||
|
import roomescape.member.implement.MemberWriter
|
||||||
import roomescape.member.infrastructure.persistence.Role
|
import roomescape.member.infrastructure.persistence.Role
|
||||||
import roomescape.member.web.MemberController
|
import roomescape.member.web.MemberController
|
||||||
import roomescape.member.web.MemberRetrieveListResponse
|
import roomescape.member.web.MemberRetrieveListResponse
|
||||||
@ -23,11 +27,18 @@ class MemberControllerTest(
|
|||||||
@Autowired private val mockMvc: MockMvc
|
@Autowired private val mockMvc: MockMvc
|
||||||
) : RoomescapeApiTest() {
|
) : RoomescapeApiTest() {
|
||||||
|
|
||||||
|
@SpykBean
|
||||||
|
private lateinit var memberService: MemberService
|
||||||
|
|
||||||
|
@MockkBean
|
||||||
|
private lateinit var memberWriter: MemberWriter
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
given("GET /members 요청을") {
|
given("GET /members 요청을") {
|
||||||
val endpoint = "/members"
|
val endpoint = "/members"
|
||||||
|
|
||||||
every { memberRepository.findAll() } returns listOf(
|
every { memberFinder.findAll() } returns listOf(
|
||||||
MemberFixture.create(id = Random.nextLong(), name = "name1"),
|
MemberFixture.create(id = Random.nextLong(), name = "name1"),
|
||||||
MemberFixture.create(id = Random.nextLong(), name = "name2"),
|
MemberFixture.create(id = Random.nextLong(), name = "name2"),
|
||||||
MemberFixture.create(id = Random.nextLong(), name = "name3"),
|
MemberFixture.create(id = Random.nextLong(), name = "name3"),
|
||||||
@ -96,11 +107,7 @@ class MemberControllerTest(
|
|||||||
)
|
)
|
||||||
`when`("같은 이메일이 없으면") {
|
`when`("같은 이메일이 없으면") {
|
||||||
every {
|
every {
|
||||||
memberRepository.existsByEmail(request.email)
|
memberWriter.create(any(), any(), any(), any())
|
||||||
} returns false
|
|
||||||
|
|
||||||
every {
|
|
||||||
memberRepository.save(any())
|
|
||||||
} returns MemberFixture.create(
|
} returns MemberFixture.create(
|
||||||
id = 1,
|
id = 1,
|
||||||
name = request.name,
|
name = request.name,
|
||||||
@ -124,8 +131,8 @@ class MemberControllerTest(
|
|||||||
|
|
||||||
`when`("같은 이메일이 있으면") {
|
`when`("같은 이메일이 있으면") {
|
||||||
every {
|
every {
|
||||||
memberRepository.existsByEmail(request.email)
|
memberWriter.create(request.name, request.email, request.password, Role.MEMBER)
|
||||||
} returns true
|
} throws MemberException(MemberErrorCode.DUPLICATE_EMAIL)
|
||||||
|
|
||||||
then("에러 응답") {
|
then("에러 응답") {
|
||||||
val expectedError = MemberErrorCode.DUPLICATE_EMAIL
|
val expectedError = MemberErrorCode.DUPLICATE_EMAIL
|
||||||
@ -138,7 +145,6 @@ class MemberControllerTest(
|
|||||||
status { isEqualTo(expectedError.httpStatus.value()) }
|
status { isEqualTo(expectedError.httpStatus.value()) }
|
||||||
jsonPath("$.code") { value(expectedError.errorCode) }
|
jsonPath("$.code") { value(expectedError.errorCode) }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import org.springframework.context.annotation.Bean
|
|||||||
import org.springframework.context.annotation.Import
|
import org.springframework.context.annotation.Import
|
||||||
import org.springframework.context.annotation.Primary
|
import org.springframework.context.annotation.Primary
|
||||||
import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext
|
import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
|
||||||
import org.springframework.http.HttpHeaders
|
import org.springframework.http.HttpHeaders
|
||||||
import org.springframework.http.MediaType
|
import org.springframework.http.MediaType
|
||||||
import org.springframework.test.web.servlet.*
|
import org.springframework.test.web.servlet.*
|
||||||
@ -22,7 +21,9 @@ import roomescape.auth.web.support.AuthInterceptor
|
|||||||
import roomescape.auth.web.support.MemberIdResolver
|
import roomescape.auth.web.support.MemberIdResolver
|
||||||
import roomescape.common.config.JacksonConfig
|
import roomescape.common.config.JacksonConfig
|
||||||
import roomescape.common.log.ApiLogMessageConverter
|
import roomescape.common.log.ApiLogMessageConverter
|
||||||
import roomescape.member.business.MemberService
|
import roomescape.member.exception.MemberErrorCode
|
||||||
|
import roomescape.member.exception.MemberException
|
||||||
|
import roomescape.member.implement.MemberFinder
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity
|
import roomescape.member.infrastructure.persistence.MemberEntity
|
||||||
import roomescape.member.infrastructure.persistence.MemberRepository
|
import roomescape.member.infrastructure.persistence.MemberRepository
|
||||||
import roomescape.util.MemberFixture.NOT_LOGGED_IN_USERID
|
import roomescape.util.MemberFixture.NOT_LOGGED_IN_USERID
|
||||||
@ -37,14 +38,14 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
@SpykBean
|
@SpykBean
|
||||||
private lateinit var memberIdResolver: MemberIdResolver
|
private lateinit var memberIdResolver: MemberIdResolver
|
||||||
|
|
||||||
@SpykBean
|
@MockkBean
|
||||||
lateinit var memberService: MemberService
|
private lateinit var memberRepository: MemberRepository
|
||||||
|
|
||||||
@SpykBean
|
@SpykBean
|
||||||
lateinit var apiLogMessageConverter: ApiLogMessageConverter
|
lateinit var apiLogMessageConverter: ApiLogMessageConverter
|
||||||
|
|
||||||
@MockkBean
|
@SpykBean
|
||||||
lateinit var memberRepository: MemberRepository
|
lateinit var memberFinder: MemberFinder
|
||||||
|
|
||||||
@MockkBean
|
@MockkBean
|
||||||
lateinit var jwtHandler: JwtHandler
|
lateinit var jwtHandler: JwtHandler
|
||||||
@ -96,8 +97,7 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
jwtHandler.getMemberIdFromToken(any())
|
jwtHandler.getMemberIdFromToken(any())
|
||||||
} returns admin.id!!
|
} returns admin.id!!
|
||||||
|
|
||||||
every { memberRepository.existsById(admin.id!!) } returns true
|
every { memberFinder.findById(admin.id!!) } returns admin
|
||||||
every { memberRepository.findByIdOrNull(admin.id!!) } returns admin
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loginAsUser() {
|
fun loginAsUser() {
|
||||||
@ -105,8 +105,7 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
jwtHandler.getMemberIdFromToken(any())
|
jwtHandler.getMemberIdFromToken(any())
|
||||||
} returns user.id!!
|
} returns user.id!!
|
||||||
|
|
||||||
every { memberRepository.existsById(user.id!!) } returns true
|
every { memberFinder.findById(user.id!!) } returns user
|
||||||
every { memberRepository.findByIdOrNull(user.id!!) } returns user
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun doNotLogin() {
|
fun doNotLogin() {
|
||||||
@ -114,8 +113,9 @@ abstract class RoomescapeApiTest : BehaviorSpec() {
|
|||||||
jwtHandler.getMemberIdFromToken(any())
|
jwtHandler.getMemberIdFromToken(any())
|
||||||
} throws AuthException(AuthErrorCode.INVALID_TOKEN)
|
} throws AuthException(AuthErrorCode.INVALID_TOKEN)
|
||||||
|
|
||||||
every { memberRepository.existsById(NOT_LOGGED_IN_USERID) } returns false
|
every {
|
||||||
every { memberRepository.findByIdOrNull(NOT_LOGGED_IN_USERID) } returns null
|
memberFinder.findById(NOT_LOGGED_IN_USERID)
|
||||||
|
} throws MemberException(MemberErrorCode.MEMBER_NOT_FOUND)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T> MvcResult.readValue(valueType: Class<T>): T = this.response.contentAsString
|
fun <T> MvcResult.readValue(valueType: Class<T>): T = this.response.contentAsString
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user