From 6db81feb9ba757a797a39e6df7572232ec28a0de Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 3 Sep 2025 10:59:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B3=B5=ED=86=B5=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=A5=BC=20=EC=9C=84=ED=95=9C=20Spe?= =?UTF-8?q?c=20=ED=83=80=EC=9E=85=EB=B3=84=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/roomescape/util/KotestConfig.kt | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/test/kotlin/roomescape/util/KotestConfig.kt b/src/test/kotlin/roomescape/util/KotestConfig.kt index 782520cf..a808def5 100644 --- a/src/test/kotlin/roomescape/util/KotestConfig.kt +++ b/src/test/kotlin/roomescape/util/KotestConfig.kt @@ -1,9 +1,73 @@ package roomescape.util import io.kotest.core.config.AbstractProjectConfig +import io.kotest.core.spec.Spec +import io.kotest.core.spec.style.BehaviorSpec +import io.kotest.core.spec.style.FunSpec +import io.kotest.core.spec.style.StringSpec import io.kotest.extensions.spring.SpringExtension import io.kotest.extensions.spring.SpringTestExtension +import io.restassured.RestAssured +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.test.web.server.LocalServerPort +import roomescape.member.infrastructure.persistence.MemberRepository +import roomescape.util.CleanerMode.AFTER_EACH_TEST object KotestConfig : AbstractProjectConfig() { override fun extensions(): List = listOf(SpringExtension) } + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +abstract class FunSpecSpringbootTest : FunSpec({ + extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST)) +}) { + @Autowired + private lateinit var memberRepository: MemberRepository + + @LocalServerPort + var port: Int = 0 + + lateinit var loginUtil: LoginUtil + + override suspend fun beforeSpec(spec: Spec) { + RestAssured.port = port + loginUtil = LoginUtil(memberRepository) + } +} + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +abstract class StringSpecSpringbootTest : StringSpec({ + extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST)) +}) { + @Autowired + private lateinit var memberRepository: MemberRepository + + @LocalServerPort + var port: Int = 0 + + lateinit var loginUtil: LoginUtil + + override suspend fun beforeSpec(spec: Spec) { + RestAssured.port = port + loginUtil = LoginUtil(memberRepository) + } +} + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +abstract class BehaviorSpecSpringbootTest : BehaviorSpec({ + extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST)) +}) { + @Autowired + private lateinit var memberRepository: MemberRepository + + @LocalServerPort + var port: Int = 0 + + lateinit var loginUtil: LoginUtil + + override suspend fun beforeSpec(spec: Spec) { + RestAssured.port = port + loginUtil = LoginUtil(memberRepository) + } +}