package roomescape.theme.util import jakarta.persistence.EntityManager import roomescape.member.infrastructure.persistence.MemberEntity import roomescape.reservation.infrastructure.persistence.ReservationStatus import roomescape.reservation.infrastructure.persistence.ReservationTimeEntity import roomescape.theme.infrastructure.persistence.ThemeEntity import roomescape.util.MemberFixture import roomescape.util.ReservationFixture import roomescape.util.ReservationTimeFixture import roomescape.util.ThemeFixture import java.time.LocalDate import java.time.LocalTime object TestThemeCreateUtil { fun createThemeWithReservations( entityManager: EntityManager, 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) } for (i in 1..reservedCount) { val time: ReservationTimeEntity = ReservationTimeFixture.create( startAt = LocalTime.now().plusMinutes(i.toLong()) ).also { entityManager.persist(it) } ReservationFixture.create( date = date, theme = themeEntity, member = member, reservationTime = time, status = ReservationStatus.CONFIRMED ).also { entityManager.persist(it) } } entityManager.flush() entityManager.clear() return themeEntity } }