generated from pricelees/issue-pr-template
[#34] 회원 / 인증 도메인 재정의 #43
@ -2,6 +2,7 @@ package roomescape.util
|
|||||||
|
|
||||||
import io.kotest.core.listeners.AfterSpecListener
|
import io.kotest.core.listeners.AfterSpecListener
|
||||||
import io.kotest.core.listeners.AfterTestListener
|
import io.kotest.core.listeners.AfterTestListener
|
||||||
|
import io.kotest.core.listeners.BeforeSpecListener
|
||||||
import io.kotest.core.spec.Spec
|
import io.kotest.core.spec.Spec
|
||||||
import io.kotest.core.test.TestCase
|
import io.kotest.core.test.TestCase
|
||||||
import io.kotest.core.test.TestResult
|
import io.kotest.core.test.TestResult
|
||||||
@ -11,7 +12,7 @@ import org.springframework.jdbc.core.JdbcTemplate
|
|||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
class DatabaseCleaner(
|
class TestDatabaseUtil(
|
||||||
val entityManager: EntityManager,
|
val entityManager: EntityManager,
|
||||||
val jdbcTemplate: JdbcTemplate,
|
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) {
|
fun clear(mode: CleanerMode) {
|
||||||
entityManager.clear()
|
entityManager.clear()
|
||||||
|
|
||||||
@ -40,7 +47,13 @@ enum class CleanerMode {
|
|||||||
ALL
|
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) {
|
override suspend fun afterTest(testCase: TestCase, result: TestResult) {
|
||||||
super.afterTest(testCase, result)
|
super.afterTest(testCase, result)
|
||||||
getCleaner().clear(CleanerMode.EXCEPT_REGION)
|
getCleaner().clear(CleanerMode.EXCEPT_REGION)
|
||||||
@ -51,9 +64,9 @@ class DatabaseCleanerExtension: AfterTestListener, AfterSpecListener {
|
|||||||
getCleaner().clear(CleanerMode.ALL)
|
getCleaner().clear(CleanerMode.ALL)
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getCleaner(): DatabaseCleaner {
|
private suspend fun getCleaner(): TestDatabaseUtil {
|
||||||
return testContextManager().testContext
|
return testContextManager().testContext
|
||||||
.applicationContext
|
.applicationContext
|
||||||
.getBean(DatabaseCleaner::class.java)
|
.getBean(TestDatabaseUtil::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user