generated from pricelees/issue-pr-template
[#34] 회원 / 인증 도메인 재정의 #43
@ -21,12 +21,12 @@ class DatabaseCleaner(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun clear() {
|
fun clear(mode: CleanerMode) {
|
||||||
entityManager.clear()
|
entityManager.clear()
|
||||||
|
|
||||||
jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY FALSE")
|
jdbcTemplate.execute("SET REFERENTIAL_INTEGRITY FALSE")
|
||||||
tables.forEach {
|
tables.forEach {
|
||||||
if (it == "region") {
|
if (mode == CleanerMode.EXCEPT_REGION && it == "region") {
|
||||||
return@forEach
|
return@forEach
|
||||||
}
|
}
|
||||||
jdbcTemplate.execute("TRUNCATE TABLE $it RESTART IDENTITY")
|
jdbcTemplate.execute("TRUNCATE TABLE $it RESTART IDENTITY")
|
||||||
@ -36,27 +36,19 @@ class DatabaseCleaner(
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum class CleanerMode {
|
enum class CleanerMode {
|
||||||
AFTER_EACH_TEST,
|
EXCEPT_REGION,
|
||||||
AFTER_SPEC
|
ALL
|
||||||
}
|
}
|
||||||
|
|
||||||
class DatabaseCleanerExtension(
|
class DatabaseCleanerExtension: AfterTestListener, AfterSpecListener {
|
||||||
private val mode: CleanerMode
|
|
||||||
) : AfterTestListener, AfterSpecListener {
|
|
||||||
override suspend fun afterTest(testCase: TestCase, result: TestResult) {
|
override suspend fun afterTest(testCase: TestCase, result: TestResult) {
|
||||||
super.afterTest(testCase, result)
|
super.afterTest(testCase, result)
|
||||||
when (mode) {
|
getCleaner().clear(CleanerMode.EXCEPT_REGION)
|
||||||
CleanerMode.AFTER_EACH_TEST -> getCleaner().clear()
|
|
||||||
CleanerMode.AFTER_SPEC -> Unit
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun afterSpec(spec: Spec) {
|
override suspend fun afterSpec(spec: Spec) {
|
||||||
super.afterSpec(spec)
|
super.afterSpec(spec)
|
||||||
when (mode) {
|
getCleaner().clear(CleanerMode.ALL)
|
||||||
CleanerMode.AFTER_EACH_TEST -> Unit
|
|
||||||
CleanerMode.AFTER_SPEC -> getCleaner().clear()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getCleaner(): DatabaseCleaner {
|
private suspend fun getCleaner(): DatabaseCleaner {
|
||||||
|
|||||||
@ -20,7 +20,6 @@ import roomescape.payment.infrastructure.persistence.PaymentRepository
|
|||||||
import roomescape.reservation.infrastructure.persistence.ReservationRepository
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository
|
||||||
import roomescape.schedule.infrastructure.persistence.ScheduleRepository
|
import roomescape.schedule.infrastructure.persistence.ScheduleRepository
|
||||||
import roomescape.theme.infrastructure.persistence.ThemeRepository
|
import roomescape.theme.infrastructure.persistence.ThemeRepository
|
||||||
import roomescape.util.CleanerMode.AFTER_EACH_TEST
|
|
||||||
|
|
||||||
object KotestConfig : AbstractProjectConfig() {
|
object KotestConfig : AbstractProjectConfig() {
|
||||||
override fun extensions(): List<SpringTestExtension> = listOf(SpringExtension)
|
override fun extensions(): List<SpringTestExtension> = listOf(SpringExtension)
|
||||||
@ -29,7 +28,7 @@ object KotestConfig : AbstractProjectConfig() {
|
|||||||
@Import(TestConfig::class)
|
@Import(TestConfig::class)
|
||||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
abstract class FunSpecSpringbootTest : FunSpec({
|
abstract class FunSpecSpringbootTest : FunSpec({
|
||||||
extension(DatabaseCleanerExtension(mode = AFTER_EACH_TEST))
|
extension(DatabaseCleanerExtension())
|
||||||
}) {
|
}) {
|
||||||
@Autowired
|
@Autowired
|
||||||
private lateinit var memberRepository: MemberRepository
|
private lateinit var memberRepository: MemberRepository
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user