From 18f3a1aebc752797ce3421048dabfd5bb7e0929e Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 5 Aug 2025 17:31:43 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=9A=A9=20=ED=85=8C=EB=A7=88=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=82=BD=EC=9E=85=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95(->TestThemeDataHelper)=20=EB=B0=8F=20entityM?= =?UTF-8?q?anager=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=A3=BC=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...meCreateUtil.kt => TestThemeDataHelper.kt} | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) rename src/test/kotlin/roomescape/theme/util/{TestThemeCreateUtil.kt => TestThemeDataHelper.kt} (58%) diff --git a/src/test/kotlin/roomescape/theme/util/TestThemeCreateUtil.kt b/src/test/kotlin/roomescape/theme/util/TestThemeDataHelper.kt similarity index 58% rename from src/test/kotlin/roomescape/theme/util/TestThemeCreateUtil.kt rename to src/test/kotlin/roomescape/theme/util/TestThemeDataHelper.kt index 72381b78..9df5f6a3 100644 --- a/src/test/kotlin/roomescape/theme/util/TestThemeCreateUtil.kt +++ b/src/test/kotlin/roomescape/theme/util/TestThemeDataHelper.kt @@ -1,6 +1,7 @@ package roomescape.theme.util import jakarta.persistence.EntityManager +import org.springframework.transaction.support.TransactionTemplate import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.reservation.infrastructure.persistence.ReservationStatus import roomescape.theme.infrastructure.persistence.ThemeEntity @@ -12,13 +13,25 @@ import roomescape.util.TimeFixture import java.time.LocalDate import java.time.LocalTime -object TestThemeCreateUtil { - fun createThemeWithReservations( - entityManager: EntityManager, - name: String, - reservedCount: Int, - date: LocalDate, - ): ThemeEntity { +class TestThemeDataHelper( + val entityManager: EntityManager, + val transactionTemplate: TransactionTemplate? +) { + /** + * GET /themes/most-reserved-last-week API와 관련 Repository 테스트에 사용 + * @param name: 테마 이름 + * @param reservedCount: 이 테마가 예약된 횟수 + * @param date: reservedCount 개의 예약을 만들 때 사용할 날짜 + */ + fun createThemeWithReservations(name: String, reservedCount: Int, date: LocalDate): ThemeEntity = + if (transactionTemplate == null) { + createAndGet(name, reservedCount, date) + } else { + transactionTemplate.execute { createAndGet(name, reservedCount, date) }!! + } + + + fun createAndGet(name: String, reservedCount: Int, date: LocalDate): ThemeEntity { val themeEntity: ThemeEntity = ThemeFixture.create(name = name).also { entityManager.persist(it) } val member: MemberEntity = MemberFixture.create().also { entityManager.persist(it) } @@ -32,7 +45,7 @@ object TestThemeCreateUtil { theme = themeEntity, member = member, time = time, - status = ReservationStatus.CONFIRMED + status = ReservationStatus.entries.random() ).also { entityManager.persist(it) } }