refactor: DatabaseCleanerExtension에서 region 테이블 생명주기 명시

This commit is contained in:
이상진 2025-09-13 13:22:31 +09:00
parent 3283779720
commit 8a7778ba19

View File

@ -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)
}
}