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/HuifuRefundCallbackServiceTest.java | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
diff --git a/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java b/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java
index 8457e8c..ce4f145 100644
--- a/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java
@@ -5,7 +5,9 @@
import com.tourguide.modules.order.domain.OrderStatus;
import com.tourguide.modules.order.domain.RefundStatus;
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 org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -20,13 +22,16 @@
class HuifuRefundCallbackServiceTest {
private TourOrderMapper orderMapper;
private HuifuRefundCallbackService callbackService;
+ private GuideSessionTransitionService sessionTransitionService;
@BeforeEach
void setUp() {
HuiFuProperties properties = new HuiFuProperties();
properties.setHuifuId("merchant-1");
orderMapper = mock(TourOrderMapper.class);
- callbackService = new HuifuRefundCallbackService(properties, orderMapper);
+ sessionTransitionService = mock(GuideSessionTransitionService.class);
+ callbackService = new HuifuRefundCallbackService(properties, orderMapper, null, null,
+ sessionTransitionService);
}
@Test
@@ -98,6 +103,19 @@
}
@Test
+ void pendingMeetingSuccessCallbackShouldRestoreGuideSession() {
+ TourOrder order = refundingOrder();
+ order.setStatus(OrderStatus.PENDING_MEETING.getCode());
+ order.setGuideId(8L);
+ order.setReceivingSessionId(18L);
+ when(orderMapper.selectByRefundOrderNoForUpdate("RF001")).thenReturn(order);
+
+ assertThat(callbackService.handle(successBody())).isTrue();
+
+ verify(sessionTransitionService).restoreAfterOrderCancellation(order);
+ }
+
+ @Test
void followUpSuccessCallbackShouldCompleteRemainingRefund() {
TourOrder order = refundingOrder();
order.setRefundAmount(new BigDecimal("16.00"));
@@ -112,6 +130,35 @@
assertThat(order.getStatus()).isEqualTo(OrderStatus.REFUNDED.getCode());
}
+ @Test
+ void partialSuccessShouldCompleteOnlyTheMatchedRefundRecord() {
+ TourOrderRefundMapper refundMapper = mock(TourOrderRefundMapper.class);
+ callbackService = new HuifuRefundCallbackService(properties(), orderMapper, refundMapper);
+ TourOrder order = refundingOrder();
+ order.setId(99L);
+ TourOrderRefund record = new TourOrderRefund();
+ record.setOrderId(99L);
+ record.setRefundOrderNo("RF001");
+ record.setRefundAmount(new BigDecimal("20.00"));
+ record.setRefundStatus(RefundStatus.REFUNDING.getCode());
+ when(refundMapper.selectByRefundOrderNoForUpdate("RF001")).thenReturn(record);
+ when(orderMapper.selectForUpdate(99L)).thenReturn(order);
+ JSONObject body = successBody();
+ body.put("ord_amt", "20.00");
+
+ assertThat(callbackService.handle(body)).isTrue();
+
+ assertThat(order.getRefundStatus()).isEqualTo(RefundStatus.PARTIAL.getCode());
+ assertThat(record.getRefundStatus()).isEqualTo(RefundStatus.REFUNDED.getCode());
+ verify(refundMapper).updateById(record);
+ }
+
+ private HuiFuProperties properties() {
+ HuiFuProperties properties = new HuiFuProperties();
+ properties.setHuifuId("merchant-1");
+ return properties;
+ }
+
private TourOrder refundingOrder() {
TourOrder order = new TourOrder();
order.setRefundOrderNo("RF001");
--
Gitblit v1.7.1