diff --git a/yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/transfer/PayTransferServiceTest.java b/yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/transfer/PayTransferServiceTest.java index 81e0c28..26bd189 100644 --- a/yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/transfer/PayTransferServiceTest.java +++ b/yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/transfer/PayTransferServiceTest.java @@ -18,7 +18,6 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; /** * {@link PayTransferServiceImpl} 的单元测试类 @@ -45,42 +44,47 @@ public class PayTransferServiceTest extends BaseDbAndRedisUnitTest { @Test public void testNotifyTransferProgressing_fillChannelPackageInfoIfAbsent() { - // mock 数据(PayTransferDO):初始为等待转账 + // mock 数据(PayTransferDO):同步任务先把 WAITING 更新为 PROCESSING,但是不返回 package 信息 PayTransferDO transfer = randomPojo(PayTransferDO.class, o -> o.setAppId(10L) .setNo("T110") - .setStatus(PayTransferStatusEnum.WAITING.getStatus()) + .setStatus(PayTransferStatusEnum.PROCESSING.getStatus()) .setChannelPackageInfo(null)); transferMapper.insert(transfer); // 准备参数 PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setAppId(10L)); - PayTransferRespDTO syncNotify = PayTransferRespDTO.processingOf("WX_TRANSFER_110", - "T110", "sync"); - - // 调用:模拟同步任务先把 WAITING 更新为 PROCESSING,但是不返回 package 信息 - transferService.notifyTransfer(channel, syncNotify); - - // 断言:状态已转账中,package 信息为空 - PayTransferDO dbTransfer = transferMapper.selectById(transfer.getId()); - assertEquals(PayTransferStatusEnum.PROCESSING.getStatus(), dbTransfer.getStatus()); - assertNull(dbTransfer.getChannelPackageInfo()); - - // 调用:模拟发起转账接口随后返回 PROCESSING,并携带微信确认收款 package 信息 PayTransferRespDTO createNotify = PayTransferRespDTO.processingOf("WX_TRANSFER_110", "T110", "create"); createNotify.setChannelPackageInfo("package-info-110"); + + // 调用:模拟发起转账接口随后返回 PROCESSING,并携带微信确认收款 package 信息 transferService.notifyTransfer(channel, createNotify); // 断言:已是 PROCESSING 时仍会补写 package 信息 - dbTransfer = transferMapper.selectById(transfer.getId()); + PayTransferDO dbTransfer = transferMapper.selectById(transfer.getId()); assertEquals(PayTransferStatusEnum.PROCESSING.getStatus(), dbTransfer.getStatus()); assertEquals("package-info-110", dbTransfer.getChannelPackageInfo()); + } + + @Test + public void testNotifyTransferProgressing_notOverwriteChannelPackageInfo() { + // mock 数据(PayTransferDO):已经存在 package 信息 + PayTransferDO transfer = randomPojo(PayTransferDO.class, + o -> o.setAppId(10L) + .setNo("T110") + .setStatus(PayTransferStatusEnum.PROCESSING.getStatus()) + .setChannelPackageInfo("package-info-110")); + transferMapper.insert(transfer); + // 准备参数 + PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setAppId(10L)); + PayTransferRespDTO syncNotify = PayTransferRespDTO.processingOf("WX_TRANSFER_110", + "T110", "sync"); - // 调用:后续同步任务仍不返回 package 信息,不应覆盖已有值 + // 调用:后续同步任务不返回 package 信息 transferService.notifyTransfer(channel, syncNotify); // 断言:已有 package 信息不被空值覆盖 - dbTransfer = transferMapper.selectById(transfer.getId()); + PayTransferDO dbTransfer = transferMapper.selectById(transfer.getId()); assertEquals("package-info-110", dbTransfer.getChannelPackageInfo()); }