package com.snow.chainshop.module.pay.service.order;
import cn.hutool.extra.spring.SpringUtil;
import com.snow.chainshop.framework.common.pojo.PageResult;
import com.snow.chainshop.framework.pay.core.client.PayClient;
import com.snow.chainshop.framework.pay.core.client.PayClientFactory;
import com.snow.chainshop.framework.pay.core.client.dto.order.PayOrderRespDTO;
import com.snow.chainshop.framework.pay.core.enums.channel.PayChannelEnum;
import com.snow.chainshop.framework.pay.core.enums.order.PayOrderDisplayModeEnum;
import com.snow.chainshop.framework.pay.core.enums.order.PayOrderStatusRespEnum;
import com.snow.chainshop.framework.test.core.ut.BaseDbAndRedisUnitTest;
import com.snow.chainshop.module.pay.api.order.dto.PayOrderCreateReqDTO;
import com.snow.chainshop.module.pay.controller.admin.order.vo.PayOrderExportReqVO;
import com.snow.chainshop.module.pay.controller.admin.order.vo.PayOrderPageReqVO;
import com.snow.chainshop.module.pay.controller.admin.order.vo.PayOrderSubmitReqVO;
import com.snow.chainshop.module.pay.controller.admin.order.vo.PayOrderSubmitRespVO;
import com.snow.chainshop.module.pay.dal.dataobject.app.PayAppDO;
import com.snow.chainshop.module.pay.dal.dataobject.channel.PayChannelDO;
import com.snow.chainshop.module.pay.dal.dataobject.order.PayOrderDO;
import com.snow.chainshop.module.pay.dal.dataobject.order.PayOrderExtensionDO;
import com.snow.chainshop.module.pay.dal.mysql.order.PayOrderExtensionMapper;
import com.snow.chainshop.module.pay.dal.mysql.order.PayOrderMapper;
import com.snow.chainshop.module.pay.dal.redis.no.PayNoRedisDAO;
import com.snow.chainshop.module.pay.enums.notify.PayNotifyTypeEnum;
import com.snow.chainshop.module.pay.enums.order.PayOrderStatusEnum;
import com.snow.chainshop.module.pay.framework.pay.config.PayProperties;
import com.snow.chainshop.module.pay.service.app.PayAppService;
import com.snow.chainshop.module.pay.service.channel.PayChannelService;
import com.snow.chainshop.module.pay.service.notify.PayNotifyService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import javax.annotation.Resource;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;
import static com.snow.chainshop.framework.common.util.date.LocalDateTimeUtils.*;
import static com.snow.chainshop.framework.common.util.json.JsonUtils.toJsonString;
import static com.snow.chainshop.framework.common.util.object.ObjectUtils.cloneIgnoreId;
import static com.snow.chainshop.framework.test.core.util.AssertUtils.assertPojoEquals;
import static com.snow.chainshop.framework.test.core.util.AssertUtils.assertServiceException;
import static com.snow.chainshop.framework.test.core.util.RandomUtils.*;
import static com.snow.chainshop.module.pay.enums.ErrorCodeConstants.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
/**
* {@link PayOrderServiceImpl} 的单元测试类
*
* @author 芋艿
*/
@Import({PayOrderServiceImpl.class, PayNoRedisDAO.class})
public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
@Resource
private PayOrderServiceImpl orderService;
@Resource
private PayOrderMapper orderMapper;
@Resource
private PayOrderExtensionMapper orderExtensionMapper;
@MockBean
private PayClientFactory payClientFactory;
@MockBean
private PayProperties properties;
@MockBean
private PayAppService appService;
@MockBean
private PayChannelService channelService;
@MockBean
private PayNotifyService notifyService;
@BeforeEach
public void setUp() {
when(properties.getOrderNotifyUrl()).thenReturn("http://127.0.0.1");
}
@Test
public void testGetOrder_id() {
// mock 数据(PayOrderDO)
PayOrderDO order = randomPojo(PayOrderDO.class);
orderMapper.insert(order);
// 准备参数
Long id = order.getId();
// 调用
PayOrderDO dbOrder = orderService.getOrder(id);
// 断言
assertPojoEquals(dbOrder, order);
}
@Test
public void testGetOrder_appIdAndMerchantOrderId() {
// mock 数据(PayOrderDO)
PayOrderDO order = randomPojo(PayOrderDO.class);
orderMapper.insert(order);
// 准备参数
Long appId = order.getAppId();
String merchantOrderId = order.getMerchantOrderId();
// 调用
PayOrderDO dbOrder = orderService.getOrder(appId, merchantOrderId);
// 断言
assertPojoEquals(dbOrder, order);
}
@Test
public void testGetOrderCountByAppId() {
// mock 数据(PayOrderDO)
PayOrderDO order01 = randomPojo(PayOrderDO.class);
orderMapper.insert(order01);
PayOrderDO order02 = randomPojo(PayOrderDO.class);
orderMapper.insert(order02);
// 准备参数
Long appId = order01.getAppId();
// 调用
Long count = orderService.getOrderCountByAppId(appId);
// 断言
assertEquals(count, 1L);
}
@Test
public void testGetOrderPage() {
// mock 数据
PayOrderDO dbOrder = randomPojo(PayOrderDO.class, o -> { // 等会查询到
o.setAppId(1L);
o.setChannelCode(PayChannelEnum.WX_PUB.getCode());
o.setMerchantOrderId("110");
o.setChannelOrderNo("220");
o.setNo("330");
o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
o.setCreateTime(buildTime(2018, 1, 15));
});
orderMapper.insert(dbOrder);
// 测试 appId 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setAppId(2L)));
// 测试 channelCode 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setChannelCode(PayChannelEnum.ALIPAY_APP.getCode())));
// 测试 merchantOrderId 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setMerchantOrderId(randomString())));
// 测试 channelOrderNo 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setChannelOrderNo(randomString())));
// 测试 no 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setNo(randomString())));
// 测试 status 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus())));
// 测试 createTime 不匹配
orderMapper.insert(cloneIgnoreId(dbOrder, o -> o.setCreateTime(buildTime(2019, 1, 1))));
// 准备参数
PayOrderPageReqVO reqVO = new PayOrderPageReqVO();
reqVO.setAppId(1L);
reqVO.setChannelCode(PayChannelEnum.WX_PUB.getCode());
reqVO.setMerchantOrderId("11");
reqVO.setChannelOrderNo("22");
reqVO.setNo("33");
reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
reqVO.setCreateTime(buildBetweenTime(2018, 1, 10, 2018, 1, 30));
// 调用
PageResult<PayOrderDO> pageResult = orderService.getOrderPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbOrder, pageResult.getList().get(0));
}
@Test
public void testGetOrderList() {
// mock 数据
PayOrderDO dbOrder = randomPojo(PayOrderDO.class, o -> { // 等会查询到
o.setAppId(1L);
o.setChannelCode(PayChannelEnum.WX_PUB.getCode());
o.setMerchantOrderId("110");
o.setChannelOrderNo("220");
o.setNo("330");
o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
o.setCreateTime(buildTime(2018, 1, 15));
});
orderMap
没有合适的资源?快使用搜索试试~ 我知道了~
基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip
共2000个文件
java:1872个
xml:61个
md:26个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 196 浏览量
2024-03-17
22:51:18
上传
评论
收藏 4.17MB ZIP 举报
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip基于区块链技术的在线购物平台源码+项目说明+数据库
资源推荐
资源详情
资源评论
收起资源包目录
基于区块链技术的在线购物平台源码+项目说明+数据库(使用加密货币进行支付+可用于商品追溯).zip (2000个子文件)
index.html 5KB
index.html 4KB
pay_wx_pub.html 4KB
login.html 2KB
callback.html 2KB
PayOrderServiceTest.java 51KB
PayRefundServiceTest.java 33KB
AdminUserServiceImplTest.java 29KB
PayOrderServiceImpl.java 26KB
ProductSpuServiceImplTest.java 26KB
DataPermissionDatabaseInterceptorTest2.java 25KB
DataPermissionDatabaseInterceptor.java 24KB
PermissionServiceTest.java 23KB
AbstractWxPayClient.java 21KB
TenantServiceImplTest.java 19KB
OAuth2OpenController.java 18KB
OAuth2OpenControllerTest.java 17KB
AdminUserServiceImpl.java 17KB
OperateLogAspect.java 16KB
CodegenEngine.java 16KB
MailSendServiceImplTest.java 16KB
AdminAuthServiceImplTest.java 16KB
PayNotifyServiceTest.java 16KB
GlobalExceptionHandler.java 15KB
SmsTemplateServiceImplTest.java 15KB
RoleServiceImplTest.java 14KB
PayRefundServiceImpl.java 14KB
PermissionServiceImpl.java 14KB
DictDataServiceImplTest.java 14KB
OAuth2TokenServiceImplTest.java 14KB
BpmnModelUtils.java 13KB
SmsSendServiceImplTest.java 13KB
PayChannelServiceTest.java 13KB
ErrorCodeServiceTest.java 13KB
NotifyMessageServiceImplTest.java 13KB
PayNotifyServiceImpl.java 12KB
FileConfigServiceImplTest.java 12KB
TencentSmsClient.java 12KB
ErrorCodeConstants.java 12KB
SocialUserServiceImplTest.java 12KB
PayDemoOrderServiceImpl.java 12KB
MemberAuthServiceImpl.java 12KB
DeptDataPermissionRuleTest.java 11KB
DictTypeServiceImplTest.java 11KB
MemberLevelServiceImpl.java 11KB
TenantServiceImpl.java 11KB
ProductSkuServiceImpl.java 11KB
SmsLogServiceImplTest.java 11KB
CodegenServiceImpl.java 11KB
OAuth2ApproveServiceImplTest.java 11KB
DiscountActivityServiceImplTest.java 11KB
SensitiveWordServiceImplTest.java 11KB
JobServiceImplTest.java 11KB
CombinationActivityServiceImplTest.java 11KB
SeckillActivityServiceImpl.java 11KB
RewardActivityServiceImplTest.java 11KB
MenuServiceImplTest.java 10KB
AdminAuthServiceImpl.java 10KB
AliyunSmsClientTest.java 10KB
ProductSpuServiceImpl.java 10KB
CodegenBuilder.java 10KB
AbstractAlipayPayClient.java 10KB
DeptServiceImplTest.java 10KB
TencentSmsClientTest.java 10KB
TenantPackageServiceImplTest.java 10KB
ChainshopMQAutoConfiguration.java 10KB
PayClientFactoryImplIntegrationTest.java 10KB
MemberLevelServiceImplTest.java 10KB
SmsChannelServiceTest.java 10KB
CollectionUtils.java 10KB
ConfigServiceImplTest.java 9KB
SensitiveWordServiceImpl.java 9KB
MemberUserServiceImpl.java 9KB
OAuth2ClientServiceImplTest.java 9KB
PayAppServiceTest.java 9KB
AbstractAlipayClientTest.java 9KB
DeptDataPermissionRule.java 9KB
CombinationActivityServiceImpl.java 9KB
UserController.java 9KB
ApiErrorLogServiceImplTest.java 9KB
PostServiceImplTest.java 9KB
ProductCommentServiceImplTest.java 9KB
CouponServiceImpl.java 9KB
ChainshopWebSecurityConfigurerAdapter.java 9KB
DataSourceConfigServiceImplTest.java 9KB
RoleServiceImpl.java 9KB
WalletPayClient.java 9KB
MailTemplateServiceImplTest.java 8KB
ProductSkuServiceTest.java 8KB
DiscountActivityServiceImpl.java 8KB
JobLogServiceImplTest.java 8KB
AliyunSmsClient.java 8KB
SmsCodeServiceImplTest.java 8KB
SmsSendServiceImpl.java 8KB
ProductSpuMapper.java 8KB
DataPermissionDatabaseInterceptorTest.java 8KB
NotifySendServiceImplTest.java 8KB
MailLogServiceImplTest.java 8KB
SeckillConfigServiceImplTest.java 8KB
SocialUserServiceImpl.java 8KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- 2301_774850002024-06-19超赞的资源,感谢资源主分享,大家一起进步!
土豆片片
- 粉丝: 1855
- 资源: 5869
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机械设计螺旋漂烫机sw15可编辑非常好的设计图纸100%好用.zip
- 粉色科幻儿童教学课件教案模板.pptx
- 儿童在绘画素材美术教学课件模板.pptx
- 儿童插画水墨画美术教学课件模板.pptx
- 两个女儿童在树下浅黄小学课件模板.pptx
- 七彩儿童乐园幼儿教学课件模板.pptx
- 卡通儿童及猫素材小学教学课件模板.pptx
- 幼儿园儿童成长手册记录卡模板.pptx
- 知识树素材儿童乐园幼儿教学课件模板.pptx
- 向日葵素材七彩儿童乐园教学课件模板.pptx
- 纸飞机小蜜蜂素材小学儿童教学课件模板.pptx
- lianxi1.asv
- 西门子200smart 恒压供水程序 西门子200smart恒压供水程序,实际的项目,稳定运行多年,三台水泵自动运行 触摸屏是mcgs,包含四个画面监控画面,参数画面,以及报警画面,手动画面,参数画面
- 双机并联自适应阻抗下垂控制仿真 复现一篇核心期刊参考文献(看图) 图一:双机并联整体仿真图 图二:自适应控制模块,有功频率下垂、无功电压下垂以及加入的自适应阻抗下垂控制策略 图三:两台逆变输出的有功功
- 非常详细丰富的代理资源配置
- 永磁同步发电机电磁计算程序,永磁电机设计软件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功