generated from pricelees/issue-pr-template
[#35] 결제 스키마 재정의 & 예약 조회 페이지 개선 #36
@ -51,7 +51,7 @@ class TimeFinder(
|
|||||||
val allTimes: List<TimeEntity> = findAll()
|
val allTimes: List<TimeEntity> = findAll()
|
||||||
|
|
||||||
return allTimes.map { time ->
|
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)
|
TimeWithAvailability(time.id!!, time.startAt, date, themeId, isReservable)
|
||||||
}.also {
|
}.also {
|
||||||
log.debug { "[TimeFinder.findAllWithAvailabilityByDateAndThemeId] ${it.size}개 조회 완료: date:$date, themeId=$themeId" }
|
log.debug { "[TimeFinder.findAllWithAvailabilityByDateAndThemeId] ${it.size}개 조회 완료: date:$date, themeId=$themeId" }
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import io.mockk.mockk
|
|||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
import org.springframework.data.repository.findByIdOrNull
|
||||||
import roomescape.reservation.implement.ReservationFinder
|
import roomescape.reservation.implement.ReservationFinder
|
||||||
|
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||||
import roomescape.time.business.domain.TimeWithAvailability
|
import roomescape.time.business.domain.TimeWithAvailability
|
||||||
import roomescape.theme.exception.ThemeErrorCode
|
import roomescape.theme.exception.ThemeErrorCode
|
||||||
import roomescape.theme.exception.ThemeException
|
import roomescape.theme.exception.ThemeException
|
||||||
@ -105,5 +106,39 @@ class TimeFinderTest : FunSpec({
|
|||||||
it.all { time -> time.isReservable }
|
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