From f23dd4ee6f0de44db73c692cf525edae607f0bd1 Mon Sep 17 00:00:00 2001 From: banjjoknim Date: Mon, 25 Apr 2022 02:33:33 +0900 Subject: [PATCH] =?UTF-8?q?test(user.adapter)=20:=20=EB=8B=89=EB=84=A4?= =?UTF-8?q?=EC=9E=84=20=EB=B3=80=EA=B2=BD=20Web=20Adapter=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/in/web/ChangeNicknameWebAdapterTest.kt | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 놀이터(예제 코드 작성)/learn-with-making-clean-architecture/src/test/kotlin/com/banjjoknim/cleanarchitecture/user/adapter/in/web/ChangeNicknameWebAdapterTest.kt diff --git a/놀이터(예제 코드 작성)/learn-with-making-clean-architecture/src/test/kotlin/com/banjjoknim/cleanarchitecture/user/adapter/in/web/ChangeNicknameWebAdapterTest.kt b/놀이터(예제 코드 작성)/learn-with-making-clean-architecture/src/test/kotlin/com/banjjoknim/cleanarchitecture/user/adapter/in/web/ChangeNicknameWebAdapterTest.kt new file mode 100644 index 0000000..7fc3b23 --- /dev/null +++ b/놀이터(예제 코드 작성)/learn-with-making-clean-architecture/src/test/kotlin/com/banjjoknim/cleanarchitecture/user/adapter/in/web/ChangeNicknameWebAdapterTest.kt @@ -0,0 +1,66 @@ +package com.banjjoknim.cleanarchitecture.user.adapter.`in`.web + +import com.banjjoknim.cleanarchitecture.user.application.port.`in`.ChangeNicknameResponseData +import com.banjjoknim.cleanarchitecture.user.application.port.`in`.ChangeNicknameUseCase +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(ChangeNicknameWebAdapter::class) +class ChangeNicknameWebAdapterTest { + + @Autowired + private lateinit var mockmvc: MockMvc + + @Autowired + private lateinit var objectMapper: ObjectMapper + + @MockkBean + private lateinit var changeNicknameUseCase: ChangeNicknameUseCase + + @BeforeEach + fun setUp(webApplicationContext: WebApplicationContext) { + mockmvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) + .addFilter(CharacterEncodingFilter("UTF-8")) + .alwaysDo(MockMvcResultHandlers.print()) + .build() + } + + @Test + fun `닉네임을 변경한다`() { + every { changeNicknameUseCase.changeNickname(any()) } returns ChangeNicknameResponseData(1L) + val request = ChangeNicknameRequest(1L, "banjjoknim") + + mockmvc.post("/users") { + contentType = MediaType.APPLICATION_JSON + content = objectMapper.writeValueAsString(request) + }.andExpect { + content { json("""{"userId":1}""") } + status { isOk() } + } + } + + @Test + fun `잘못된 닉네임 변경 요청에 BadRequest 응답을 반환한다`() { + val request = ChangeNicknameRequest(1L, "banjjoknim!!") + + mockmvc.post("/users") { + contentType = MediaType.APPLICATION_JSON + content = objectMapper.writeValueAsString(request) + }.andExpect { + status { isBadRequest() } + } + } +}