diff --git a/src/main/java/roomescape/payment/infrastructure/persistence/CanceledPaymentRepository.kt b/src/main/java/roomescape/payment/infrastructure/persistence/CanceledPaymentRepository.kt index cb5d2e53..70466653 100644 --- a/src/main/java/roomescape/payment/infrastructure/persistence/CanceledPaymentRepository.kt +++ b/src/main/java/roomescape/payment/infrastructure/persistence/CanceledPaymentRepository.kt @@ -1,8 +1,7 @@ package roomescape.payment.infrastructure.persistence import org.springframework.data.jpa.repository.JpaRepository -import java.util.* interface CanceledPaymentRepository : JpaRepository { - fun findByPaymentKey(paymentKey: String): Optional + fun findByPaymentKey(paymentKey: String): CanceledPaymentEntity? } diff --git a/src/main/java/roomescape/payment/infrastructure/persistence/PaymentRepository.kt b/src/main/java/roomescape/payment/infrastructure/persistence/PaymentRepository.kt index c0ccd469..bf83f375 100644 --- a/src/main/java/roomescape/payment/infrastructure/persistence/PaymentRepository.kt +++ b/src/main/java/roomescape/payment/infrastructure/persistence/PaymentRepository.kt @@ -1,10 +1,14 @@ package roomescape.payment.infrastructure.persistence import org.springframework.data.jpa.repository.JpaRepository -import java.util.* +import org.springframework.data.jpa.repository.Query interface PaymentRepository : JpaRepository { - fun findByReservationId(reservationId: Long): Optional - fun findByPaymentKey(paymentKey: String): Optional + fun existsByReservationId(reservationId: Long): Boolean + + @Query("SELECT p.paymentKey FROM PaymentEntity p WHERE p.reservation.id = :reservationId") + fun findPaymentKeyByReservationId(reservationId: Long): String? + + fun findByPaymentKey(paymentKey: String): PaymentEntity? } diff --git a/src/test/java/roomescape/payment/business/PaymentServiceTest.java b/src/test/java/roomescape/payment/business/PaymentServiceTest.java index ee975e38..10a5dbb8 100644 --- a/src/test/java/roomescape/payment/business/PaymentServiceTest.java +++ b/src/test/java/roomescape/payment/business/PaymentServiceTest.java @@ -17,6 +17,7 @@ import roomescape.common.exception.RoomescapeException; import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.Role; +import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository; import roomescape.payment.web.PaymentApprove; import roomescape.payment.web.PaymentCancel; @@ -88,7 +89,7 @@ class PaymentServiceTest { PaymentCancel.Request paymentCancelRequest = paymentService.cancelPaymentByAdmin(reservation.getId()); // then - assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotEmpty(); + assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull(); assertThat(paymentCancelRequest.paymentKey).isEqualTo(paymentInfo.paymentKey); assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청"); assertThat(paymentCancelRequest.amount).isEqualTo(10000L); @@ -127,8 +128,10 @@ class PaymentServiceTest { paymentService.updateCanceledTime(paymentInfo.paymentKey, canceledAt); // then - canceledPaymentRepository.findByPaymentKey(paymentInfo.paymentKey) - .ifPresent(canceledPayment -> assertThat(canceledPayment.getCanceledAt()).isEqualTo(canceledAt)); + CanceledPaymentEntity canceledPayment = canceledPaymentRepository.findByPaymentKey(paymentInfo.paymentKey); + + assertThat(canceledPayment).isNotNull(); + assertThat(canceledPayment.getCanceledAt()).isEqualTo(canceledAt); } @Test diff --git a/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java b/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java index 62577810..a026ee41 100644 --- a/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java +++ b/src/test/java/roomescape/reservation/controller/ReservationControllerTest.java @@ -447,13 +447,12 @@ public class ReservationControllerTest { .statusCode(400); // then - Optional canceledPaymentOptional = canceledPaymentRepository.findByPaymentKey( - paymentKey); - assertThat(canceledPaymentOptional).isNotNull(); - assertThat(canceledPaymentOptional.get().getCanceledAt()).isEqualTo(canceledAt); - assertThat(canceledPaymentOptional.get().getCancelReason()).isEqualTo("고객 요청"); - assertThat(canceledPaymentOptional.get().getCancelAmount()).isEqualTo(1000L); - assertThat(canceledPaymentOptional.get().getApprovedAt()).isEqualTo(approvedAt); + CanceledPaymentEntity canceledPayment = canceledPaymentRepository.findByPaymentKey(paymentKey); + assertThat(canceledPayment).isNotNull(); + assertThat(canceledPayment.getCanceledAt()).isEqualTo(canceledAt); + assertThat(canceledPayment.getCancelReason()).isEqualTo("고객 요청"); + assertThat(canceledPayment.getCancelAmount()).isEqualTo(1000L); + assertThat(canceledPayment.getApprovedAt()).isEqualTo(approvedAt); } @DisplayName("테마만을 이용하여 예약을 조회한다.") diff --git a/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java b/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java index 4f74c7e6..b0f589c3 100644 --- a/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java +++ b/src/test/java/roomescape/reservation/service/ReservationWithPaymentServiceTest.java @@ -17,6 +17,7 @@ import roomescape.member.infrastructure.persistence.Member; import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.Role; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository; +import roomescape.payment.infrastructure.persistence.PaymentEntity; import roomescape.payment.infrastructure.persistence.PaymentRepository; import roomescape.payment.web.PaymentApprove; import roomescape.payment.web.PaymentCancel; @@ -76,13 +77,13 @@ class ReservationWithPaymentServiceTest { assertThat(reservation.getReservationTime().getId()).isEqualTo(time.getId()); assertThat(reservation.getReservationStatus()).isEqualTo(ReservationStatus.CONFIRMED); }); - paymentRepository.findByPaymentKey("payment-key") - .ifPresent(payment -> { - assertThat(payment.getReservation().getId()).isEqualTo(reservationResponse.id()); - assertThat(payment.getPaymentKey()).isEqualTo("payment-key"); - assertThat(payment.getOrderId()).isEqualTo("order-id"); - assertThat(payment.getTotalAmount()).isEqualTo(10000L); - }); + + PaymentEntity payment = paymentRepository.findByPaymentKey("payment-key"); + assertThat(payment).isNotNull(); + assertThat(payment.getReservation().getId()).isEqualTo(reservationResponse.id()); + assertThat(payment.getPaymentKey()).isEqualTo("payment-key"); + assertThat(payment.getOrderId()).isEqualTo("order-id"); + assertThat(payment.getTotalAmount()).isEqualTo(10000L); } @Test @@ -109,8 +110,8 @@ class ReservationWithPaymentServiceTest { // then assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청"); assertThat(reservationRepository.findById(reservationResponse.id())).isEmpty(); - assertThat(paymentRepository.findByPaymentKey("payment-key")).isEmpty(); - assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotEmpty(); + assertThat(paymentRepository.findByPaymentKey("payment-key")).isNull(); + assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull(); } @Test