From 39f6fca28e3f78abe48f08e474ec011abb990b36 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 09 九月 2026 10:39:21 +0800
Subject: [PATCH] update
---
backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 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 9f93aa2..8457e8c 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
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.tourguide.common.huifu.properties.HuiFuProperties;
+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.mapper.TourOrderMapper;
@@ -39,6 +40,7 @@
assertThat(first).isTrue();
assertThat(duplicate).isFalse();
assertThat(order.getRefundStatus()).isEqualTo(RefundStatus.REFUNDED.getCode());
+ assertThat(order.getStatus()).isEqualTo(OrderStatus.REFUNDED.getCode());
assertThat(order.getRefundTime()).isNotNull();
verify(orderMapper).updateById(order);
}
@@ -69,11 +71,53 @@
verify(orderMapper, never()).updateById(order);
}
+ @Test
+ void nestedSuccessCallbackShouldCompleteOrder() {
+ TourOrder order = refundingOrder();
+ when(orderMapper.selectByRefundOrderNoForUpdate("RF001")).thenReturn(order);
+ JSONObject data = successBody();
+ JSONObject body = new JSONObject();
+ body.put("data", data);
+
+ assertThat(callbackService.handle(body)).isTrue();
+ assertThat(order.getStatus()).isEqualTo(OrderStatus.REFUNDED.getCode());
+ }
+
+ @Test
+ void partialSuccessCallbackShouldKeepRefundingBalance() {
+ TourOrder order = refundingOrder();
+ order.setRefundAmount(new BigDecimal("20.00"));
+ when(orderMapper.selectByRefundOrderNoForUpdate("RF001")).thenReturn(order);
+ JSONObject body = successBody();
+ body.put("ord_amt", "20.00");
+
+ assertThat(callbackService.handle(body)).isTrue();
+ assertThat(order.getRefundedAmount()).isEqualByComparingTo("20.00");
+ assertThat(order.getRefundStatus()).isEqualTo(RefundStatus.PARTIAL.getCode());
+ assertThat(order.getStatus()).isEqualTo(OrderStatus.CANCELLED.getCode());
+ }
+
+ @Test
+ void followUpSuccessCallbackShouldCompleteRemainingRefund() {
+ TourOrder order = refundingOrder();
+ order.setRefundAmount(new BigDecimal("16.00"));
+ order.setRefundedAmount(new BigDecimal("20.00"));
+ when(orderMapper.selectByRefundOrderNoForUpdate("RF001")).thenReturn(order);
+ JSONObject body = successBody();
+ body.put("ord_amt", "16.00");
+
+ assertThat(callbackService.handle(body)).isTrue();
+ assertThat(order.getRefundedAmount()).isEqualByComparingTo("36.00");
+ assertThat(order.getRefundStatus()).isEqualTo(RefundStatus.REFUNDED.getCode());
+ assertThat(order.getStatus()).isEqualTo(OrderStatus.REFUNDED.getCode());
+ }
+
private TourOrder refundingOrder() {
TourOrder order = new TourOrder();
order.setRefundOrderNo("RF001");
order.setRefundStatus(RefundStatus.REFUNDING.getCode());
order.setRefundAmount(new BigDecimal("36.00"));
+ order.setPaymentAmount(new BigDecimal("36.00"));
return order;
}
--
Gitblit v1.7.1