From 5eb705800ab2163fd0cec44b374d5fd9d32fca92 Mon Sep 17 00:00:00 2001 From: jini Date: Sat, 3 Dec 2022 22:06:07 +0900 Subject: [PATCH] =?UTF-8?q?:white=5Fcheck=5Fmark:=20[demo-all-in-one-app]?= =?UTF-8?q?=20RegisterNoticeControllerTest=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../input/web/RegisterNoticeController.kt | 2 +- .../input/web/RegisterNoticeControllerTest.kt | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 server/demo-all-in-one-app/src/test/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeControllerTest.kt diff --git a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt index 1d34851..aa60bfd 100644 --- a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt +++ b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt @@ -19,7 +19,7 @@ internal class RegisterNoticeController( private val registerNoticeUseCase: RegisterNoticeUseCase, ) { - @Operation(summary = "공지사항 상세조회") + @Operation(summary = "공지사항 추가") @PostMapping("") fun registerNotice(@RequestBody command: RegisterNoticeCommand): BaseResponse { registerNoticeUseCase.registerNotice(command) diff --git a/server/demo-all-in-one-app/src/test/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeControllerTest.kt b/server/demo-all-in-one-app/src/test/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeControllerTest.kt new file mode 100644 index 0000000..c7579a5 --- /dev/null +++ b/server/demo-all-in-one-app/src/test/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeControllerTest.kt @@ -0,0 +1,67 @@ +package me.jiniworld.demohx.notice.adapter.input.web + +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import me.jiniworld.demohx.GsonUtils +import me.jiniworld.demohx.model.BaseResponse +import me.jiniworld.demohx.notice.application.port.input.RegisterNoticeCommand +import me.jiniworld.demohx.notice.application.port.input.RegisterNoticeUseCase +import org.assertj.core.api.Assertions.assertThat +import org.hamcrest.Matchers +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.MediaType +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders +import org.springframework.test.web.servlet.result.MockMvcResultHandlers +import org.springframework.test.web.servlet.result.MockMvcResultMatchers.* +import org.springframework.test.web.servlet.setup.MockMvcBuilders + +internal class RegisterNoticeControllerTest { + + @Autowired + private lateinit var mockMvc: MockMvc + + private lateinit var registerNoticeController: RegisterNoticeController + private lateinit var registerNoticeUseCase: RegisterNoticeUseCase + + @BeforeEach + fun setUp() { + val registerNoticeUseCase = mockk(relaxed = true) + this.registerNoticeUseCase = registerNoticeUseCase + val cont = RegisterNoticeController(registerNoticeUseCase) + this.registerNoticeController = cont + this.mockMvc = MockMvcBuilders.standaloneSetup(cont).build() + } + + @Test + fun registerNoticeTest_mockMvc() { + val command = RegisterNoticeCommand(title = "title1", content = "content1") + + // when + val resultActions = mockMvc.perform( + MockMvcRequestBuilders.post("/v1/notices") + .content(GsonUtils.toJson(command)) + .header("Content-Type", "application/json") + ) + + // then + resultActions + .andExpect(status().isOk) + .andExpect(jsonPath("$.result", Matchers.`is`("success"))) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) + .andDo(MockMvcResultHandlers.print()) + } + + @Test + fun registerNoticeTest_mockK() { + val command = RegisterNoticeCommand(title = "title1", content = "content1") + + every { registerNoticeUseCase.registerNotice(command) } returns Unit + assertThat(registerNoticeController.registerNotice(command)).isEqualTo(BaseResponse.SUCCESS) + verify { registerNoticeUseCase.registerNotice(command) } + } + +} \ No newline at end of file