From be9a6bc80e91dd631d8f7cc5aa6e7464e2ca1a13 Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 15 Jul 2025 16:13:38 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=83=88=EB=A1=9C=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98=ED=95=9C=20API=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20=EB=B0=94=ED=83=95?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20MemberControllerTest=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MemberControllerTest.kt | 61 +++++++++++++------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/src/test/java/roomescape/member/controller/MemberControllerTest.kt b/src/test/java/roomescape/member/controller/MemberControllerTest.kt index 59e5b3a2..7f24f6d8 100644 --- a/src/test/java/roomescape/member/controller/MemberControllerTest.kt +++ b/src/test/java/roomescape/member/controller/MemberControllerTest.kt @@ -1,17 +1,21 @@ package roomescape.member.controller -import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldContainAll import io.kotest.matchers.shouldBe import io.mockk.every -import io.restassured.module.kotlin.extensions.Extract -import org.hamcrest.Matchers.containsString +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.test.web.servlet.MockMvc +import roomescape.member.web.MemberController +import roomescape.member.web.MembersResponse import roomescape.util.MemberFixture import roomescape.util.RoomescapeApiTest -import roomescape.member.web.MembersResponse -class MemberControllerTest : RoomescapeApiTest() { +@WebMvcTest(controllers = [MemberController::class]) +class MemberControllerTest( + @Autowired private val mockMvc: MockMvc +) : RoomescapeApiTest() { init { given("GET /members 요청을") { @@ -24,16 +28,21 @@ class MemberControllerTest : RoomescapeApiTest() { ) `when`("관리자가 보내면") { - setUpAdmin() + loginAsAdmin() then("성공한다.") { - val result: Any = runGetTest(endpoint) { - statusCode(200) - } Extract { - path("data") - } + val result: String = runGetTest( + mockMvc = mockMvc, + endpoint = endpoint, + log = true + ) { + status { isOk() } + }.andReturn().response.contentAsString - val response: MembersResponse = jacksonObjectMapper().convertValue(result, MembersResponse::class.java) + val response: MembersResponse = readValue( + responseJson = result, + valueType = MembersResponse::class.java + ) assertSoftly(response.members) { it.size shouldBe 3 @@ -44,20 +53,32 @@ class MemberControllerTest : RoomescapeApiTest() { `when`("관리자가 아니면 로그인 페이지로 이동한다.") { then("비회원") { - setUpNotLoggedIn() + doNotLogin() - runGetTest(endpoint) { - statusCode(200) - body(containsString("Login")) + runGetTest( + mockMvc = mockMvc, + endpoint = endpoint, + log = true + ) { + status { is3xxRedirection() } + header { + string("Location", "/login") + } } } then("일반 회원") { - setUpUser() + loginAsUser() - runGetTest(endpoint) { - statusCode(200) - body(containsString("Login")) + runGetTest( + mockMvc = mockMvc, + endpoint = endpoint, + log = true + ) { + status { is3xxRedirection() } + header { + string("Location", "/login") + } } } }