refactor: payment 관련 Repository에서 모든 Optional 반환 제거

This commit is contained in:
이상진 2025-07-16 14:46:55 +09:00
parent 3ca58b2dae
commit 4e4956e9dc
5 changed files with 30 additions and 24 deletions

View File

@ -1,8 +1,7 @@
package roomescape.payment.infrastructure.persistence
import org.springframework.data.jpa.repository.JpaRepository
import java.util.*
interface CanceledPaymentRepository : JpaRepository<CanceledPaymentEntity, Long> {
fun findByPaymentKey(paymentKey: String): Optional<CanceledPaymentEntity>
fun findByPaymentKey(paymentKey: String): CanceledPaymentEntity?
}

View File

@ -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<PaymentEntity, Long> {
fun findByReservationId(reservationId: Long): Optional<PaymentEntity>
fun findByPaymentKey(paymentKey: String): Optional<PaymentEntity>
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?
}

View File

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

View File

@ -447,13 +447,12 @@ public class ReservationControllerTest {
.statusCode(400);
// then
Optional<CanceledPaymentEntity> 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("테마만을 이용하여 예약을 조회한다.")

View File

@ -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 -> {
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