From 4f6f15b818704079ff2e4e4719b798f48d68a335 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 11 九月 2026 13:52:19 +0800
Subject: [PATCH] update
---
backend/src/test/java/com/tourguide/modules/order/service/OrderRefundServiceTest.java | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/backend/src/test/java/com/tourguide/modules/order/service/OrderRefundServiceTest.java b/backend/src/test/java/com/tourguide/modules/order/service/OrderRefundServiceTest.java
index 5c9fc17..8091f9d 100644
--- a/backend/src/test/java/com/tourguide/modules/order/service/OrderRefundServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/order/service/OrderRefundServiceTest.java
@@ -4,16 +4,20 @@
import com.tourguide.modules.order.domain.RefundStatus;
import com.tourguide.modules.order.domain.PaymentMethod;
import com.tourguide.modules.order.entity.TourOrder;
+import com.tourguide.modules.order.entity.TourOrderRefund;
import com.tourguide.modules.order.mapper.TourOrderMapper;
+import com.tourguide.modules.order.mapper.TourOrderRefundMapper;
import com.tourguide.modules.order.payment.PaymentRefundGateway;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -126,6 +130,25 @@
}
@Test
+ void eachSuccessfulLocalRefundShouldCreateAnIndependentCompletedRecord() {
+ TourOrderRefundMapper refundMapper = mock(TourOrderRefundMapper.class);
+ refundService = new OrderRefundService(orderMapper, refundGateway, refundMapper);
+ TourOrder order = paidOrder();
+ order.setPaymentMethod(PaymentMethod.TEMPORARY_BYPASS.getCode());
+
+ assertThat(refundService.requestRefund(order, new BigDecimal("20.00"))).isTrue();
+ assertThat(refundService.requestRefund(order, new BigDecimal("16.00"))).isTrue();
+
+ ArgumentCaptor<TourOrderRefund> insertCaptor = ArgumentCaptor.forClass(TourOrderRefund.class);
+ verify(refundMapper, times(2)).insert(insertCaptor.capture());
+ assertThat(insertCaptor.getAllValues()).extracting(TourOrderRefund::getRefundAmount)
+ .containsExactly(new BigDecimal("20.00"), new BigDecimal("16.00"));
+ verify(refundMapper, times(2)).updateById(any(TourOrderRefund.class));
+ assertThat(insertCaptor.getAllValues()).extracting(TourOrderRefund::getRefundStatus)
+ .containsOnly(RefundStatus.REFUNDED.getCode());
+ }
+
+ @Test
void refundShouldRejectAmountAboveRemainingBalance() {
TourOrder order = paidOrder();
order.setRefundedAmount(new BigDecimal("20.00"));
--
Gitblit v1.7.1