完成支付模块支付应用信息和微信类型的支付渠道配置。

This commit is contained in:
aquan
2021-11-09 16:36:07 +08:00
parent 6265e4a736
commit e46a27b937
56 changed files with 3373 additions and 28 deletions

View File

@ -0,0 +1,196 @@
package cn.iocoder.yudao.adminserver.modules.pay.app.service;
import javax.annotation.Resource;
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppCreateReqVO;
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO;
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppPageReqVO;
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppUpdateReqVO;
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper;
import cn.iocoder.yudao.adminserver.modules.pay.service.app.impl.PayAppServiceImpl;
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
import java.util.*;
import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
* {@link PayAppServiceImpl} 的单元测试类
*
* @author 芋艿
*/
@Import(PayAppServiceImpl.class)
public class PayAppServiceTest extends BaseDbUnitTest {
@Resource
private PayAppServiceImpl appService;
@Resource
private PayAppMapper appMapper;
@Test
public void testCreateApp_success() {
// 准备参数
PayAppCreateReqVO reqVO = randomPojo(PayAppCreateReqVO.class);
// 调用
Long appId = appService.createApp(reqVO);
// 断言
assertNotNull(appId);
// 校验记录的属性是否正确
PayAppDO app = appMapper.selectById(appId);
assertPojoEquals(reqVO, app);
}
@Test
public void testUpdateApp_success() {
// mock 数据
PayAppDO dbApp = randomPojo(PayAppDO.class);
appMapper.insert(dbApp);// @Sql: 先插入出一条存在的数据
// 准备参数
PayAppUpdateReqVO reqVO = randomPojo(PayAppUpdateReqVO.class, o -> {
o.setId(dbApp.getId()); // 设置更新的 ID
});
// 调用
appService.updateApp(reqVO);
// 校验是否更新正确
PayAppDO app = appMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, app);
}
@Test
public void testUpdateApp_notExists() {
// 准备参数
PayAppUpdateReqVO reqVO = randomPojo(PayAppUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> appService.updateApp(reqVO), APP_NOT_EXISTS);
}
@Test
public void testDeleteApp_success() {
// mock 数据
PayAppDO dbApp = randomPojo(PayAppDO.class);
appMapper.insert(dbApp);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbApp.getId();
// 调用
appService.deleteApp(id);
// 校验数据不存在了
assertNull(appMapper.selectById(id));
}
@Test
public void testDeleteApp_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> appService.deleteApp(id), APP_NOT_EXISTS);
}
@Test // TODO 请修改 null 为需要的值
public void testGetAppPage() {
// mock 数据
PayAppDO dbApp = randomPojo(PayAppDO.class, o -> { // 等会查询到
o.setName(null);
o.setStatus(null);
o.setRemark(null);
o.setPayNotifyUrl(null);
o.setRefundNotifyUrl(null);
o.setMerchantId(null);
o.setCreateTime(null);
});
appMapper.insert(dbApp);
// 测试 name 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setName(null)));
// 测试 status 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setStatus(null)));
// 测试 remark 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setRemark(null)));
// 测试 payNotifyUrl 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setPayNotifyUrl(null)));
// 测试 refundNotifyUrl 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setRefundNotifyUrl(null)));
// 测试 merchantId 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setMerchantId(null)));
// 测试 createTime 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setCreateTime(null)));
// 准备参数
PayAppPageReqVO reqVO = new PayAppPageReqVO();
reqVO.setName(null);
reqVO.setStatus(null);
reqVO.setRemark(null);
reqVO.setPayNotifyUrl(null);
reqVO.setRefundNotifyUrl(null);
reqVO.setBeginCreateTime(null);
reqVO.setEndCreateTime(null);
// 调用
PageResult<PayAppDO> pageResult = appService.getAppPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbApp, pageResult.getList().get(0));
}
@Test // TODO 请修改 null 为需要的值
public void testGetAppList() {
// mock 数据
PayAppDO dbApp = randomPojo(PayAppDO.class, o -> { // 等会查询到
o.setName(null);
o.setStatus(null);
o.setRemark(null);
o.setPayNotifyUrl(null);
o.setRefundNotifyUrl(null);
o.setMerchantId(null);
o.setCreateTime(null);
});
appMapper.insert(dbApp);
// 测试 name 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setName(null)));
// 测试 status 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setStatus(null)));
// 测试 remark 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setRemark(null)));
// 测试 payNotifyUrl 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setPayNotifyUrl(null)));
// 测试 refundNotifyUrl 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setRefundNotifyUrl(null)));
// 测试 merchantId 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setMerchantId(null)));
// 测试 createTime 不匹配
appMapper.insert(ObjectUtils.clone(dbApp, o -> o.setCreateTime(null)));
// 准备参数
PayAppExportReqVO reqVO = new PayAppExportReqVO();
reqVO.setName(null);
reqVO.setStatus(null);
reqVO.setRemark(null);
reqVO.setPayNotifyUrl(null);
reqVO.setRefundNotifyUrl(null);
reqVO.setMerchantId(null);
reqVO.setBeginCreateTime(null);
reqVO.setEndCreateTime(null);
// 调用
List<PayAppDO> list = appService.getAppList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbApp, list.get(0));
}
}

View File

@ -0,0 +1,204 @@
package cn.iocoder.yudao.adminserver.modules.pay.channel;
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.adminserver.modules.pay.service.channel.impl.PayChannelServiceImpl;
import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.*;
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.channel.PayChannelMapper;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
import java.util.*;
import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
* {@link PayChannelServiceImpl} 的单元测试类
*
* @author 芋艿
*/
@Import(PayChannelServiceImpl.class)
public class PayChannelServiceTest extends BaseDbUnitTest {
@Resource
private PayChannelServiceImpl channelService;
@Resource
private PayChannelMapper channelMapper;
@Test
public void testCreateChannel_success() {
// 准备参数
PayChannelCreateReqVO reqVO = randomPojo(PayChannelCreateReqVO.class);
// 调用
Long channelId = channelService.createChannel(reqVO);
// 断言
assertNotNull(channelId);
// 校验记录的属性是否正确
PayChannelDO channel = channelMapper.selectById(channelId);
assertPojoEquals(reqVO, channel);
}
@Test
public void testUpdateChannel_success() {
// mock 数据
PayChannelDO dbChannel = randomPojo(PayChannelDO.class);
channelMapper.insert(dbChannel);// @Sql: 先插入出一条存在的数据
// 准备参数
PayChannelUpdateReqVO reqVO = randomPojo(PayChannelUpdateReqVO.class, o -> {
o.setId(dbChannel.getId()); // 设置更新的 ID
});
// 调用
channelService.updateChannel(reqVO);
// 校验是否更新正确
PayChannelDO channel = channelMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, channel);
}
@Test
public void testUpdateChannel_notExists() {
// 准备参数
PayChannelUpdateReqVO reqVO = randomPojo(PayChannelUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> channelService.updateChannel(reqVO), CHANNEL_NOT_EXISTS);
}
@Test
public void testDeleteChannel_success() {
// mock 数据
PayChannelDO dbChannel = randomPojo(PayChannelDO.class);
channelMapper.insert(dbChannel);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbChannel.getId();
// 调用
channelService.deleteChannel(id);
// 校验数据不存在了
assertNull(channelMapper.selectById(id));
}
@Test
public void testDeleteChannel_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> channelService.deleteChannel(id), CHANNEL_NOT_EXISTS);
}
@Test // TODO 请修改 null 为需要的值
public void testGetChannelPage() {
// mock 数据
PayChannelDO dbChannel = randomPojo(PayChannelDO.class, o -> { // 等会查询到
o.setCode(null);
o.setStatus(null);
o.setRemark(null);
o.setFeeRate(null);
o.setMerchantId(null);
o.setAppId(null);
o.setConfig(null);
o.setCreateTime(null);
});
channelMapper.insert(dbChannel);
// 测试 code 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setCode(null)));
// 测试 status 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setStatus(null)));
// 测试 remark 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setRemark(null)));
// 测试 feeRate 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setFeeRate(null)));
// 测试 merchantId 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setMerchantId(null)));
// 测试 appId 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setAppId(null)));
// 测试 config 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setConfig(null)));
// 测试 createTime 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setCreateTime(null)));
// 准备参数
PayChannelPageReqVO reqVO = new PayChannelPageReqVO();
reqVO.setCode(null);
reqVO.setStatus(null);
reqVO.setRemark(null);
reqVO.setFeeRate(null);
reqVO.setMerchantId(null);
reqVO.setAppId(null);
reqVO.setConfig(null);
reqVO.setBeginCreateTime(null);
reqVO.setEndCreateTime(null);
// 调用
PageResult<PayChannelDO> pageResult = channelService.getChannelPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbChannel, pageResult.getList().get(0));
}
@Test // TODO 请修改 null 为需要的值
public void testGetChannelList() {
// mock 数据
PayChannelDO dbChannel = randomPojo(PayChannelDO.class, o -> { // 等会查询到
o.setCode(null);
o.setStatus(null);
o.setRemark(null);
o.setFeeRate(null);
o.setMerchantId(null);
o.setAppId(null);
o.setConfig(null);
o.setCreateTime(null);
});
channelMapper.insert(dbChannel);
// 测试 code 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setCode(null)));
// 测试 status 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setStatus(null)));
// 测试 remark 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setRemark(null)));
// 测试 feeRate 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setFeeRate(null)));
// 测试 merchantId 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setMerchantId(null)));
// 测试 appId 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setAppId(null)));
// 测试 config 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setConfig(null)));
// 测试 createTime 不匹配
channelMapper.insert(ObjectUtils.clone(dbChannel, o -> o.setCreateTime(null)));
// 准备参数
PayChannelExportReqVO reqVO = new PayChannelExportReqVO();
reqVO.setCode(null);
reqVO.setStatus(null);
reqVO.setRemark(null);
reqVO.setFeeRate(null);
reqVO.setMerchantId(null);
reqVO.setAppId(null);
reqVO.setConfig(null);
reqVO.setBeginCreateTime(null);
reqVO.setEndCreateTime(null);
// 调用
List<PayChannelDO> list = channelService.getChannelList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbChannel, list.get(0));
}
}

View File

@ -1,6 +1,9 @@
package cn.iocoder.yudao.adminserver.modules.pay.merchant.service;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.PayMerchantCreateReqVO;
import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.PayMerchantExportReqVO;
@ -28,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.*;
/**
* {@link PayMerchantServiceImpl} 的单元测试类
*
* @author 芋艿 // TODO @aquan修改成自己的。。。
* @author aquan
*/
@Import(PayMerchantServiceImpl.class)
public class PayMerchantServiceTest extends BaseDbUnitTest {