Commit 172c06b6381f0b7ec4de4ac6ef95b26b7d2d3050

Authored by YunaiV
1 parent 7760e163

完成短信日志的单元测试

src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogServiceTest.java
1 package cn.iocoder.dashboard.modules.system.service.sms; 1 package cn.iocoder.dashboard.modules.system.service.sms;
2 2
  3 +import cn.hutool.core.map.MapUtil;
3 import cn.iocoder.dashboard.BaseDbUnitTest; 4 import cn.iocoder.dashboard.BaseDbUnitTest;
4 import cn.iocoder.dashboard.common.enums.UserTypeEnum; 5 import cn.iocoder.dashboard.common.enums.UserTypeEnum;
  6 +import cn.iocoder.dashboard.common.pojo.CommonResult;
5 import cn.iocoder.dashboard.common.pojo.PageResult; 7 import cn.iocoder.dashboard.common.pojo.PageResult;
6 import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; 8 import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
7 import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; 9 import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
8 import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; 10 import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO;
  11 +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
9 import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsLogMapper; 12 import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsLogMapper;
10 import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum; 13 import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum;
11 import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; 14 import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum;
@@ -17,16 +20,17 @@ import org.junit.jupiter.api.Test; @@ -17,16 +20,17 @@ import org.junit.jupiter.api.Test;
17 import org.springframework.context.annotation.Import; 20 import org.springframework.context.annotation.Import;
18 21
19 import javax.annotation.Resource; 22 import javax.annotation.Resource;
20 -import java.util.HashMap; 23 +import java.util.Date;
21 import java.util.List; 24 import java.util.List;
  25 +import java.util.Map;
22 import java.util.function.Consumer; 26 import java.util.function.Consumer;
23 27
  28 +import static cn.hutool.core.util.RandomUtil.randomBoolean;
24 import static cn.hutool.core.util.RandomUtil.randomEle; 29 import static cn.hutool.core.util.RandomUtil.randomEle;
25 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals; 30 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
26 -import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;  
27 -import static cn.iocoder.dashboard.util.RandomUtils.randomString; 31 +import static cn.iocoder.dashboard.util.RandomUtils.*;
28 import static cn.iocoder.dashboard.util.date.DateUtils.buildTime; 32 import static cn.iocoder.dashboard.util.date.DateUtils.buildTime;
29 -import static org.junit.jupiter.api.Assertions.assertEquals; 33 +import static org.junit.jupiter.api.Assertions.*;
30 34
31 /** 35 /**
32 * {@link SysSmsLogServiceImpl} 的单元测试类 36 * {@link SysSmsLogServiceImpl} 的单元测试类
@@ -42,7 +46,93 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest { @@ -42,7 +46,93 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest {
42 @Resource 46 @Resource
43 private SysSmsLogMapper smsLogMapper; 47 private SysSmsLogMapper smsLogMapper;
44 48
45 - @Test // TODO 请修改 null 为需要的值 49 + @Test
  50 + public void testCreateSmsLog() {
  51 + // 准备参数
  52 + String mobile = randomString();
  53 + Long userId = randomLongId();
  54 + Integer userType = randomEle(UserTypeEnum.values()).getValue();
  55 + Boolean isSend = randomBoolean();
  56 + SysSmsTemplateDO templateDO = randomPojo(SysSmsTemplateDO.class,
  57 + o -> o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType()));
  58 + String templateContent = randomString();
  59 + Map<String, Object> templateParams = randomTemplateParams();
  60 + // mock 方法
  61 +
  62 + // 调用
  63 + Long logId = smsLogService.createSmsLog(mobile, userId, userType, isSend,
  64 + templateDO, templateContent, templateParams);
  65 + // 断言
  66 + SysSmsLogDO logDO = smsLogMapper.selectById(logId);
  67 + assertEquals(isSend ? SysSmsSendStatusEnum.INIT.getStatus() : SysSmsSendStatusEnum.IGNORE.getStatus(),
  68 + logDO.getSendStatus());
  69 + assertEquals(mobile, logDO.getMobile());
  70 + assertEquals(userType, logDO.getUserType());
  71 + assertEquals(userId, logDO.getUserId());
  72 + assertEquals(templateDO.getId(), logDO.getTemplateId());
  73 + assertEquals(templateDO.getCode(), logDO.getTemplateCode());
  74 + assertEquals(templateDO.getType(), logDO.getTemplateType());
  75 + assertEquals(templateDO.getChannelId(), logDO.getChannelId());
  76 + assertEquals(templateDO.getChannelCode(), logDO.getChannelCode());
  77 + assertEquals(templateContent, logDO.getTemplateContent());
  78 + assertEquals(templateParams, logDO.getTemplateParams());
  79 + assertEquals(SysSmsReceiveStatusEnum.INIT.getStatus(), logDO.getReceiveStatus());
  80 + }
  81 +
  82 + @Test
  83 + public void testUpdateSmsSendResult() {
  84 + // mock 数据
  85 + SysSmsLogDO dbSmsLog = randomSmsLogDO(
  86 + o -> o.setSendStatus(SysSmsSendStatusEnum.IGNORE.getStatus()));
  87 + smsLogMapper.insert(dbSmsLog);
  88 + // 准备参数
  89 + Long id = dbSmsLog.getId();
  90 + Integer sendCode = randomInteger();
  91 + String sendMsg = randomString();
  92 + String apiSendCode = randomString();
  93 + String apiSendMsg = randomString();
  94 + String apiRequestId = randomString();
  95 + String apiSerialNo = randomString();
  96 +
  97 + // 调用
  98 + smsLogService.updateSmsSendResult(id, sendCode, sendMsg,
  99 + apiSendCode, apiSendMsg, apiRequestId, apiSerialNo);
  100 + // 断言
  101 + dbSmsLog = smsLogMapper.selectById(id);
  102 + assertEquals(CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS.getStatus()
  103 + : SysSmsSendStatusEnum.FAILURE.getStatus(), dbSmsLog.getSendStatus());
  104 + assertNotNull(dbSmsLog.getSendTime());
  105 + assertEquals(sendMsg, dbSmsLog.getSendMsg());
  106 + assertEquals(apiSendCode, dbSmsLog.getApiSendCode());
  107 + assertEquals(apiSendMsg, dbSmsLog.getApiSendMsg());
  108 + assertEquals(apiRequestId, dbSmsLog.getApiRequestId());
  109 + assertEquals(apiSerialNo, dbSmsLog.getApiSerialNo());
  110 + }
  111 +
  112 + public void testUpdateSmsReceiveResult() {
  113 + // mock 数据
  114 + SysSmsLogDO dbSmsLog = randomSmsLogDO(
  115 + o -> o.setReceiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus()));
  116 + smsLogMapper.insert(dbSmsLog);
  117 + // 准备参数
  118 + Long id = dbSmsLog.getId();
  119 + Boolean success = randomBoolean();
  120 + Date receiveTime = randomDate();
  121 + String apiReceiveCode = randomString();
  122 + String apiReceiveMsg = randomString();
  123 +
  124 + // 调用
  125 + smsLogService.updateSmsReceiveResult(id, success, receiveTime, apiReceiveCode, apiReceiveMsg);
  126 + // 断言
  127 + dbSmsLog = smsLogMapper.selectById(id);
  128 + assertEquals(success ? SysSmsReceiveStatusEnum.SUCCESS.getStatus()
  129 + : SysSmsReceiveStatusEnum.FAILURE.getStatus(), dbSmsLog.getReceiveStatus());
  130 + assertEquals(receiveTime, dbSmsLog.getReceiveTime());
  131 + assertEquals(apiReceiveCode, dbSmsLog.getApiSendCode());
  132 + assertEquals(apiReceiveMsg, dbSmsLog.getApiReceiveMsg());
  133 + }
  134 +
  135 + @Test
46 public void testGetSmsLogPage() { 136 public void testGetSmsLogPage() {
47 // mock 数据 137 // mock 数据
48 SysSmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到 138 SysSmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到
@@ -140,12 +230,17 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest { @@ -140,12 +230,17 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest {
140 @SafeVarargs 230 @SafeVarargs
141 private static SysSmsLogDO randomSmsLogDO(Consumer<SysSmsLogDO>... consumers) { 231 private static SysSmsLogDO randomSmsLogDO(Consumer<SysSmsLogDO>... consumers) {
142 Consumer<SysSmsLogDO> consumer = (o) -> { 232 Consumer<SysSmsLogDO> consumer = (o) -> {
143 - o.setTemplateParams(new HashMap<>());  
144 - o.getTemplateParams().put(randomString(), randomString());  
145 - o.getTemplateParams().put(randomString(), randomString()); 233 + o.setTemplateParams(randomTemplateParams());
146 o.setTemplateType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 templateType 的范围 234 o.setTemplateType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 templateType 的范围
147 o.setUserType(randomEle(UserTypeEnum.values()).getValue()); // 保证 userType 的范围 235 o.setUserType(randomEle(UserTypeEnum.values()).getValue()); // 保证 userType 的范围
  236 + o.setReceiveStatus(randomEle(SysSmsReceiveStatusEnum.values()).getStatus()); // 保证 receiveStatus 的范围
148 }; 237 };
149 return randomPojo(SysSmsLogDO.class, ArrayUtils.append(consumer, consumers)); 238 return randomPojo(SysSmsLogDO.class, ArrayUtils.append(consumer, consumers));
150 } 239 }
  240 +
  241 +
  242 + private static Map<String, Object> randomTemplateParams() {
  243 + return MapUtil.<String, Object>builder().put(randomString(), randomString())
  244 + .put(randomString(), randomString()).build();
  245 + }
151 } 246 }