generated from pricelees/issue-pr-template
refactor: region 테이블로 인해 발생하는 테스트에서의 테이블 초기화 오류 수정
This commit is contained in:
parent
efa33a071f
commit
3f74206985
@ -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 {
|
||||
|
||||
@ -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<SpringTestExtension> = 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user