45 lines
1.6 KiB
Kotlin

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