diff --git a/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterPersistenceAdapterTest.kt b/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterPersistenceAdapterTest.kt new file mode 100644 index 0000000..c05d7c5 --- /dev/null +++ b/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterPersistenceAdapterTest.kt @@ -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") + } +} diff --git a/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterWebAdapterTest.kt b/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterWebAdapterTest.kt new file mode 100644 index 0000000..4d8985b --- /dev/null +++ b/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterWebAdapterTest.kt @@ -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(CharacterEncodingFilter("UTF-8")) + .alwaysDo(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() } + } + } +} diff --git a/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/application/register/UserRegisterServiceTest.kt b/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/application/register/UserRegisterServiceTest.kt new file mode 100644 index 0000000..c808fee --- /dev/null +++ b/놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/application/register/UserRegisterServiceTest.kt @@ -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() + 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)) + } +}