From 8a7778ba192036d47a14e9f7038546395e5fa9d1 Mon Sep 17 00:00:00 2001 From: pricelees Date: Sat, 13 Sep 2025 13:22:31 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20DatabaseCleanerExtension=EC=97=90?= =?UTF-8?q?=EC=84=9C=20region=20=ED=85=8C=EC=9D=B4=EB=B8=94=20=EC=83=9D?= =?UTF-8?q?=EB=AA=85=EC=A3=BC=EA=B8=B0=20=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DatabaseCleaner.kt => TestDatabaseUtil.kt} | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) rename src/test/kotlin/roomescape/util/{DatabaseCleaner.kt => TestDatabaseUtil.kt} (72%) diff --git a/src/test/kotlin/roomescape/util/DatabaseCleaner.kt b/src/test/kotlin/roomescape/util/TestDatabaseUtil.kt similarity index 72% rename from src/test/kotlin/roomescape/util/DatabaseCleaner.kt rename to src/test/kotlin/roomescape/util/TestDatabaseUtil.kt index 4fdfe401..0e7aed8d 100644 --- a/src/test/kotlin/roomescape/util/DatabaseCleaner.kt +++ b/src/test/kotlin/roomescape/util/TestDatabaseUtil.kt @@ -2,6 +2,7 @@ package roomescape.util import io.kotest.core.listeners.AfterSpecListener import io.kotest.core.listeners.AfterTestListener +import io.kotest.core.listeners.BeforeSpecListener import io.kotest.core.spec.Spec import io.kotest.core.test.TestCase import io.kotest.core.test.TestResult @@ -11,7 +12,7 @@ import org.springframework.jdbc.core.JdbcTemplate import org.springframework.stereotype.Component @Component -class DatabaseCleaner( +class TestDatabaseUtil( val entityManager: EntityManager, val jdbcTemplate: JdbcTemplate, ) { @@ -21,6 +22,12 @@ class DatabaseCleaner( } } + fun initializeRegion() { + this::class.java.getResource("/schema/region-data.sql")?.readText()?.let { + jdbcTemplate.execute(it) + } + } + fun clear(mode: CleanerMode) { entityManager.clear() @@ -40,7 +47,13 @@ enum class CleanerMode { ALL } -class DatabaseCleanerExtension: AfterTestListener, AfterSpecListener { +class DatabaseCleanerExtension: BeforeSpecListener, AfterTestListener, AfterSpecListener { + + override suspend fun beforeSpec(spec: Spec) { + super.beforeSpec(spec) + getCleaner().initializeRegion() + } + override suspend fun afterTest(testCase: TestCase, result: TestResult) { super.afterTest(testCase, result) getCleaner().clear(CleanerMode.EXCEPT_REGION) @@ -51,9 +64,9 @@ class DatabaseCleanerExtension: AfterTestListener, AfterSpecListener { getCleaner().clear(CleanerMode.ALL) } - private suspend fun getCleaner(): DatabaseCleaner { + private suspend fun getCleaner(): TestDatabaseUtil { return testContextManager().testContext .applicationContext - .getBean(DatabaseCleaner::class.java) + .getBean(TestDatabaseUtil::class.java) } }