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 package roomescape.payment.infrastructure.persistence
import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaRepository
import java.util.*
interface CanceledPaymentRepository : JpaRepository<CanceledPaymentEntity, Long> { 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 package roomescape.payment.infrastructure.persistence
import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaRepository
import java.util.* import org.springframework.data.jpa.repository.Query
interface PaymentRepository : JpaRepository<PaymentEntity, Long> { 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.Member;
import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.MemberRepository;
import roomescape.member.infrastructure.persistence.Role; import roomescape.member.infrastructure.persistence.Role;
import roomescape.payment.infrastructure.persistence.CanceledPaymentEntity;
import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
import roomescape.payment.web.PaymentApprove; import roomescape.payment.web.PaymentApprove;
import roomescape.payment.web.PaymentCancel; import roomescape.payment.web.PaymentCancel;
@ -88,7 +89,7 @@ class PaymentServiceTest {
PaymentCancel.Request paymentCancelRequest = paymentService.cancelPaymentByAdmin(reservation.getId()); PaymentCancel.Request paymentCancelRequest = paymentService.cancelPaymentByAdmin(reservation.getId());
// then // then
assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotEmpty(); assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull();
assertThat(paymentCancelRequest.paymentKey).isEqualTo(paymentInfo.paymentKey); assertThat(paymentCancelRequest.paymentKey).isEqualTo(paymentInfo.paymentKey);
assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청"); assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청");
assertThat(paymentCancelRequest.amount).isEqualTo(10000L); assertThat(paymentCancelRequest.amount).isEqualTo(10000L);
@ -127,8 +128,10 @@ class PaymentServiceTest {
paymentService.updateCanceledTime(paymentInfo.paymentKey, canceledAt); paymentService.updateCanceledTime(paymentInfo.paymentKey, canceledAt);
// then // then
canceledPaymentRepository.findByPaymentKey(paymentInfo.paymentKey) CanceledPaymentEntity canceledPayment = canceledPaymentRepository.findByPaymentKey(paymentInfo.paymentKey);
.ifPresent(canceledPayment -> assertThat(canceledPayment.getCanceledAt()).isEqualTo(canceledAt));
assertThat(canceledPayment).isNotNull();
assertThat(canceledPayment.getCanceledAt()).isEqualTo(canceledAt);
} }
@Test @Test

View File

@ -447,13 +447,12 @@ public class ReservationControllerTest {
.statusCode(400); .statusCode(400);
// then // then
Optional<CanceledPaymentEntity> canceledPaymentOptional = canceledPaymentRepository.findByPaymentKey( CanceledPaymentEntity canceledPayment = canceledPaymentRepository.findByPaymentKey(paymentKey);
paymentKey); assertThat(canceledPayment).isNotNull();
assertThat(canceledPaymentOptional).isNotNull(); assertThat(canceledPayment.getCanceledAt()).isEqualTo(canceledAt);
assertThat(canceledPaymentOptional.get().getCanceledAt()).isEqualTo(canceledAt); assertThat(canceledPayment.getCancelReason()).isEqualTo("고객 요청");
assertThat(canceledPaymentOptional.get().getCancelReason()).isEqualTo("고객 요청"); assertThat(canceledPayment.getCancelAmount()).isEqualTo(1000L);
assertThat(canceledPaymentOptional.get().getCancelAmount()).isEqualTo(1000L); assertThat(canceledPayment.getApprovedAt()).isEqualTo(approvedAt);
assertThat(canceledPaymentOptional.get().getApprovedAt()).isEqualTo(approvedAt);
} }
@DisplayName("테마만을 이용하여 예약을 조회한다.") @DisplayName("테마만을 이용하여 예약을 조회한다.")

View File

@ -17,6 +17,7 @@ import roomescape.member.infrastructure.persistence.Member;
import roomescape.member.infrastructure.persistence.MemberRepository; import roomescape.member.infrastructure.persistence.MemberRepository;
import roomescape.member.infrastructure.persistence.Role; import roomescape.member.infrastructure.persistence.Role;
import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository; import roomescape.payment.infrastructure.persistence.CanceledPaymentRepository;
import roomescape.payment.infrastructure.persistence.PaymentEntity;
import roomescape.payment.infrastructure.persistence.PaymentRepository; import roomescape.payment.infrastructure.persistence.PaymentRepository;
import roomescape.payment.web.PaymentApprove; import roomescape.payment.web.PaymentApprove;
import roomescape.payment.web.PaymentCancel; import roomescape.payment.web.PaymentCancel;
@ -76,13 +77,13 @@ class ReservationWithPaymentServiceTest {
assertThat(reservation.getReservationTime().getId()).isEqualTo(time.getId()); assertThat(reservation.getReservationTime().getId()).isEqualTo(time.getId());
assertThat(reservation.getReservationStatus()).isEqualTo(ReservationStatus.CONFIRMED); 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.getReservation().getId()).isEqualTo(reservationResponse.id());
assertThat(payment.getPaymentKey()).isEqualTo("payment-key"); assertThat(payment.getPaymentKey()).isEqualTo("payment-key");
assertThat(payment.getOrderId()).isEqualTo("order-id"); assertThat(payment.getOrderId()).isEqualTo("order-id");
assertThat(payment.getTotalAmount()).isEqualTo(10000L); assertThat(payment.getTotalAmount()).isEqualTo(10000L);
});
} }
@Test @Test
@ -109,8 +110,8 @@ class ReservationWithPaymentServiceTest {
// then // then
assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청"); assertThat(paymentCancelRequest.cancelReason).isEqualTo("고객 요청");
assertThat(reservationRepository.findById(reservationResponse.id())).isEmpty(); assertThat(reservationRepository.findById(reservationResponse.id())).isEmpty();
assertThat(paymentRepository.findByPaymentKey("payment-key")).isEmpty(); assertThat(paymentRepository.findByPaymentKey("payment-key")).isNull();
assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotEmpty(); assertThat(canceledPaymentRepository.findByPaymentKey("payment-key")).isNotNull();
} }
@Test @Test