From 7c02d9ceae1aefa651cd79b4063dbca23826e712 Mon Sep 17 00:00:00 2001 From: pricelees Date: Thu, 9 Oct 2025 15:10:54 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=8D=94=EB=AF=B8=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 만료, 취소 예약 기능 추가 - Payment 생성 시 입력된 method에 따른 분기 처리 --- .../roomescape/supports/DummyInitializer.kt | 21 +++++++++ .../sangdol/roomescape/supports/Fixtures.kt | 47 +++++++++++++------ 2 files changed, 53 insertions(+), 15 deletions(-) diff --git a/service/src/test/kotlin/com/sangdol/roomescape/supports/DummyInitializer.kt b/service/src/test/kotlin/com/sangdol/roomescape/supports/DummyInitializer.kt index e40bb5a8..dca0fefe 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/supports/DummyInitializer.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/supports/DummyInitializer.kt @@ -156,6 +156,27 @@ class DummyInitializer( } } + fun createExpiredOrCanceledReservation( + user: UserEntity, + status: ReservationStatus, + storeId: Long = IDGenerator.create(), + themeRequest: ThemeCreateRequest = ThemeFixture.createRequest, + scheduleRequest: ScheduleCreateRequest = ScheduleFixture.createRequest, + reservationRequest: PendingReservationCreateRequest = ReservationFixture.pendingCreateRequest, + ): ReservationEntity { + return createPendingReservation(user, storeId, themeRequest, scheduleRequest, reservationRequest).apply { + this.status = status + }.also { + reservationRepository.save(it) + + scheduleRepository.findByIdOrNull(it.scheduleId)?.let { schedule -> + schedule.status = ScheduleStatus.AVAILABLE + schedule.holdExpiredAt = null + scheduleRepository.save(schedule) + } + } + } + fun createPayment( reservationId: Long, request: PaymentConfirmRequest = PaymentFixture.confirmRequest, diff --git a/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt b/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt index d90148f6..416a539b 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/supports/Fixtures.kt @@ -299,21 +299,38 @@ object PaymentFixture { easyPayDetail: EasyPayDetailResponse? = null, transferDetail: TransferDetailResponse? = null, orderId: String = randomString(25), - ) = PaymentGatewayResponse( - paymentKey = paymentKey, - status = PaymentStatus.DONE, - orderId = orderId, - type = PaymentType.NORMAL, - totalAmount = amount, - vat = (amount * 0.1).toInt(), - suppliedAmount = (amount * 0.9).toInt(), - method = method, - card = cardDetail, - easyPay = easyPayDetail, - transfer = transferDetail, - requestedAt = KoreaDateTime.nowWithOffset(), - approvedAt = KoreaDateTime.nowWithOffset().plusSeconds(5) - ) + ): PaymentGatewayResponse { + var card: CardDetailResponse? = cardDetail + if (method == PaymentMethod.CARD && cardDetail == null) { + card = cardDetail(amount) + } + + var easypay: EasyPayDetailResponse? = easyPayDetail + if (method == PaymentMethod.EASY_PAY && easyPayDetail == null) { + easypay = easypayDetail(amount) + } + + var transfer: TransferDetailResponse? = transferDetail + if (method == PaymentMethod.TRANSFER && transferDetail == null) { + transfer = transferDetail() + } + + return PaymentGatewayResponse( + paymentKey = paymentKey, + status = PaymentStatus.DONE, + orderId = orderId, + type = PaymentType.NORMAL, + totalAmount = amount, + vat = (amount * 0.1).toInt(), + suppliedAmount = (amount * 0.9).toInt(), + method = method, + card = card, + easyPay = easypay, + transfer = transfer, + requestedAt = KoreaDateTime.nowWithOffset(), + approvedAt = KoreaDateTime.nowWithOffset().plusSeconds(5) + ) + } fun cancelResponse( amount: Int,