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