From cf61c0de4375690c257da557dcd322f150df21b0 Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 6 Aug 2025 16:58:59 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20ReservationSearchSpecification=20?= =?UTF-8?q?=EB=82=B4=20=EC=98=88=EC=95=BD=20=EC=83=81=ED=83=9C=EB=A5=BC=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=ED=95=98=EB=8A=94=20=EC=A1=B0=EA=B1=B4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/ReservationSearchSpecification.kt | 4 ++++ .../ReservationSearchSpecificationTest.kt | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecification.kt b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecification.kt index fb6d01e8..f760a897 100644 --- a/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecification.kt +++ b/src/main/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecification.kt @@ -33,6 +33,10 @@ class ReservationSearchSpecification( } }) + fun status(vararg statuses: ReservationStatus) = andIfNotNull { root, _, cb -> + root.get("status").`in`(statuses.toList()) + } + fun confirmed(): ReservationSearchSpecification = andIfNotNull { root, _, cb -> cb.or( cb.equal( diff --git a/src/test/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecificationTest.kt b/src/test/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecificationTest.kt index 88323f85..c9cf5570 100644 --- a/src/test/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecificationTest.kt +++ b/src/test/kotlin/roomescape/reservation/infrastructure/persistence/ReservationSearchSpecificationTest.kt @@ -81,6 +81,21 @@ class ReservationSearchSpecificationTest( } } + "여러 상태를 입력받아 같은 상태안 예약을 조회한다." { + val spec = ReservationSearchSpecification() + .status( + ReservationStatus.CONFIRMED, + ReservationStatus.CONFIRMED_PAYMENT_REQUIRED, + ReservationStatus.WAITING + ).build() + + val results: List = reservationRepository.findAll(spec) + + assertSoftly(results) { + this shouldHaveSize reservationRepository.findAll().size + } + } + "확정 상태인 예약을 조회한다" { val spec = ReservationSearchSpecification() .confirmed()