test : 회원 등록 기능 테스트 추가

This commit is contained in:
banjjoknim
2022-05-02 21:26:00 +09:00
parent 42e05457e5
commit 0bec44f6de
3 changed files with 108 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
package com.banjjoknim.springmultimodule.user.adapter.register
import com.banjjoknim.springmultimodule.user.User
import com.banjjoknim.springmultimodule.user.UserRepository
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
import org.springframework.context.annotation.Import
import org.springframework.data.repository.findByIdOrNull
@DataJpaTest
@Import(value = [UserRegisterPersistenceAdapter::class])
class UserRegisterPersistenceAdapterTest {
@Autowired
private lateinit var userRegisterPersistenceAdapter: UserRegisterPersistenceAdapter
@Autowired
private lateinit var userRepository: UserRepository
@Test
fun `회원을 등록한다`() {
userRegisterPersistenceAdapter.registerUser(User("banjjoknim"))
val user = userRepository.findByIdOrNull(1)
assertThat(user).isNotNull
assertThat(user?.name).isEqualTo("banjjoknim")
}
}

View File

@@ -0,0 +1,54 @@
package com.banjjoknim.springmultimodule.user.adapter.register
import com.banjjoknim.springmultimodule.user.application.register.UserRegisterResponseData
import com.banjjoknim.springmultimodule.user.application.register.UserRegisterUseCase
import com.fasterxml.jackson.databind.ObjectMapper
import com.ninjasquad.springmockk.MockkBean
import io.mockk.every
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.http.MediaType
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.post
import org.springframework.test.web.servlet.result.MockMvcResultHandlers
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.springframework.web.context.WebApplicationContext
import org.springframework.web.filter.CharacterEncodingFilter
@WebMvcTest(controllers = [UserRegisterWebAdapter::class])
class UserRegisterWebAdapterTest {
@Autowired
private lateinit var mockMvc: MockMvc
@Autowired
private lateinit var objectMapper: ObjectMapper
@MockkBean
private lateinit var userRegisterUseCase: UserRegisterUseCase
@BeforeEach
fun setUp(webApplicationContext: WebApplicationContext) {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
.addFilter<DefaultMockMvcBuilder>(CharacterEncodingFilter("UTF-8"))
.alwaysDo<DefaultMockMvcBuilder>(MockMvcResultHandlers.print())
.build()
}
@Test
fun `회원을 등록한다`() {
every { userRegisterUseCase.registerUser(any()) } returns UserRegisterResponseData(1)
val request = UserRegisterRequest("banjjoknim")
mockMvc.post("/users") {
contentType = MediaType.APPLICATION_JSON
content = objectMapper.writeValueAsString(request)
}.andExpect {
content { json("""{"userId":1}""") }
status { isOk() }
}
}
}

View File

@@ -0,0 +1,23 @@
package com.banjjoknim.springmultimodule.user.application.register
import com.banjjoknim.springmultimodule.user.User
import io.mockk.every
import io.mockk.mockk
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
class UserRegisterServiceTest {
private val userRegisterPersistencePort = mockk<UserRegisterPersistencePort>()
private val userRegisterService = UserRegisterService(userRegisterPersistencePort)
@Test
fun `회원을 등록한다`() {
every { userRegisterPersistencePort.registerUser(any()) } returns User("banjjoknim", 1)
val requestData = UserRegisterRequestData("banjjoknim")
val responseData = userRegisterService.registerUser(requestData)
assertThat(responseData).isEqualTo(UserRegisterResponseData(1))
}
}