[#34] 회원 / 인증 도메인 재정의 #43

Merged
pricelees merged 73 commits from refactor/#34 into main 2025-09-13 10:13:45 +00:00
2 changed files with 8 additions and 17 deletions
Showing only changes of commit 3f74206985 - Show all commits

View File

@ -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 {

View File

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