diff --git a/src/test/kotlin/roomescape/util/DatabaseCleaner.kt b/src/test/kotlin/roomescape/util/DatabaseCleaner.kt index b2b6ce43..4fdfe401 100644 --- a/src/test/kotlin/roomescape/util/DatabaseCleaner.kt +++ b/src/test/kotlin/roomescape/util/DatabaseCleaner.kt @@ -21,12 +21,12 @@ class DatabaseCleaner( } } - fun clear() { + fun clear(mode: CleanerMode) { entityManager.clear() jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY FALSE") tables.forEach { - if (it == "region") { + if (mode == CleanerMode.EXCEPT_REGION && it == "region") { return@forEach } jdbcTemplate.execute("TRUNCATE TABLE $it RESTART IDENTITY") @@ -36,27 +36,19 @@ class DatabaseCleaner( } enum class CleanerMode { - AFTER_EACH_TEST, - AFTER_SPEC + EXCEPT_REGION, + ALL } -class DatabaseCleanerExtension( - private val mode: CleanerMode -) : AfterTestListener, AfterSpecListener { +class DatabaseCleanerExtension: AfterTestListener, AfterSpecListener { override suspend fun afterTest(testCase: TestCase, result: TestResult) { super.afterTest(testCase, result) - when (mode) { - CleanerMode.AFTER_EACH_TEST -> getCleaner().clear() - CleanerMode.AFTER_SPEC -> Unit - } + getCleaner().clear(CleanerMode.EXCEPT_REGION) } override suspend fun afterSpec(spec: Spec) { super.afterSpec(spec) - when (mode) { - CleanerMode.AFTER_EACH_TEST -> Unit - CleanerMode.AFTER_SPEC -> getCleaner().clear() - } + getCleaner().clear(CleanerMode.ALL) } private suspend fun getCleaner(): DatabaseCleaner { diff --git a/src/test/kotlin/roomescape/util/KotestConfig.kt b/src/test/kotlin/roomescape/util/KotestConfig.kt index 5342a5e3..3e92b362 100644 --- a/src/test/kotlin/roomescape/util/KotestConfig.kt +++ b/src/test/kotlin/roomescape/util/KotestConfig.kt @@ -20,7 +20,6 @@ import roomescape.payment.infrastructure.persistence.PaymentRepository import roomescape.reservation.infrastructure.persistence.ReservationRepository import roomescape.schedule.infrastructure.persistence.ScheduleRepository import roomescape.theme.infrastructure.persistence.ThemeRepository -import roomescape.util.CleanerMode.AFTER_EACH_TEST object KotestConfig : AbstractProjectConfig() { override fun extensions(): List = listOf(SpringExtension) @@ -29,7 +28,7 @@ object KotestConfig : AbstractProjectConfig() { @Import(TestConfig::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) abstract class FunSpecSpringbootTest : FunSpec({ - extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST)) + extension(DatabaseCleanerExtension()) }) { @Autowired private lateinit var memberRepository: MemberRepository