generated from pricelees/issue-pr-template
fix: 예약 가능 시간 조회 로직 오류 수정 및 테스트 케이스 추가
This commit is contained in:
parent
b05c61a65a
commit
56ada7730c
@ -51,7 +51,7 @@ class TimeFinder(
|
||||
val allTimes: List<TimeEntity> = findAll()
|
||||
|
||||
return allTimes.map { time ->
|
||||
val isReservable: Boolean = reservations.any { reservation -> time.id == reservation.id }
|
||||
val isReservable: Boolean = reservations.none { reservation -> time.id == reservation.time.id }
|
||||
TimeWithAvailability(time.id!!, time.startAt, date, themeId, isReservable)
|
||||
}.also {
|
||||
log.debug { "[TimeFinder.findAllWithAvailabilityByDateAndThemeId] ${it.size}개 조회 완료: date:$date, themeId=$themeId" }
|
||||
|
||||
@ -10,6 +10,7 @@ import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import roomescape.reservation.implement.ReservationFinder
|
||||
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||
import roomescape.time.business.domain.TimeWithAvailability
|
||||
import roomescape.theme.exception.ThemeErrorCode
|
||||
import roomescape.theme.exception.ThemeException
|
||||
@ -105,5 +106,39 @@ class TimeFinderTest : FunSpec({
|
||||
it.all { time -> time.isReservable }
|
||||
}
|
||||
}
|
||||
|
||||
test("날짜, 테마에 맞는 예약이 있으면 예약할 수 없다.") {
|
||||
val times = listOf(
|
||||
TimeFixture.create(startAt = LocalTime.now()),
|
||||
TimeFixture.create(startAt = LocalTime.now().plusMinutes(30))
|
||||
)
|
||||
every {
|
||||
themeFinder.findById(themeId)
|
||||
} returns mockk()
|
||||
|
||||
every {
|
||||
timeRepository.findAll()
|
||||
} returns times
|
||||
|
||||
every {
|
||||
reservationFinder.findAllByDateAndTheme(date, any())
|
||||
} returns listOf(
|
||||
mockk<ReservationEntity>().apply {
|
||||
every { time.id } returns times[0].id
|
||||
},
|
||||
mockk<ReservationEntity>().apply {
|
||||
every { time.id } returns 0
|
||||
}
|
||||
)
|
||||
|
||||
val result: List<TimeWithAvailability> =
|
||||
timeFinder.findAllWithAvailabilityByDateAndThemeId(date, themeId)
|
||||
|
||||
assertSoftly(result) {
|
||||
it shouldHaveSize 2
|
||||
it[0].isReservable shouldBe false
|
||||
it[1].isReservable shouldBe true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user