From 0bec44f6decbf2f4cbd415982a7c7d92f6cf8ad8 Mon Sep 17 00:00:00 2001 From: banjjoknim Date: Mon, 2 May 2022 21:26:00 +0900 Subject: [PATCH] =?UTF-8?q?test=20:=20=ED=9A=8C=EC=9B=90=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../register/UserRegisterPersistenceAdapterTest.kt | 31 +++++++++++ .../adapter/register/UserRegisterWebAdapterTest.kt | 54 +++++++++++++++++++ .../application/register/UserRegisterServiceTest.kt | 23 ++++++++ 3 files changed, 108 insertions(+) create mode 100644 놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterPersistenceAdapterTest.kt create mode 100644 놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/adapter/register/UserRegisterWebAdapterTest.kt create mode 100644 놀이터(예제 코드 작성)/spring-multi-module/module-api/src/test/kotlin/com/banjjoknim/springmultimodule/user/application/register/UserRegisterServiceTest.kt 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)) + } +}