Commit 172c06b6381f0b7ec4de4ac6ef95b26b7d2d3050
1 parent
7760e163
完成短信日志的单元测试
Showing
1 changed file
with
103 additions
and
8 deletions
src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogServiceTest.java
| 1 | 1 | package cn.iocoder.dashboard.modules.system.service.sms; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.map.MapUtil; | |
| 3 | 4 | import cn.iocoder.dashboard.BaseDbUnitTest; |
| 4 | 5 | import cn.iocoder.dashboard.common.enums.UserTypeEnum; |
| 6 | +import cn.iocoder.dashboard.common.pojo.CommonResult; | |
| 5 | 7 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 6 | 8 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; |
| 7 | 9 | import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; |
| 8 | 10 | import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; |
| 11 | +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | |
| 9 | 12 | import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsLogMapper; |
| 10 | 13 | import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum; |
| 11 | 14 | import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; |
| ... | ... | @@ -17,16 +20,17 @@ import org.junit.jupiter.api.Test; |
| 17 | 20 | import org.springframework.context.annotation.Import; |
| 18 | 21 | |
| 19 | 22 | import javax.annotation.Resource; |
| 20 | -import java.util.HashMap; | |
| 23 | +import java.util.Date; | |
| 21 | 24 | import java.util.List; |
| 25 | +import java.util.Map; | |
| 22 | 26 | import java.util.function.Consumer; |
| 23 | 27 | |
| 28 | +import static cn.hutool.core.util.RandomUtil.randomBoolean; | |
| 24 | 29 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 25 | 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 | 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 | 36 | * {@link SysSmsLogServiceImpl} 的单元测试类 |
| ... | ... | @@ -42,7 +46,93 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest { |
| 42 | 46 | @Resource |
| 43 | 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 | 136 | public void testGetSmsLogPage() { |
| 47 | 137 | // mock 数据 |
| 48 | 138 | SysSmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到 |
| ... | ... | @@ -140,12 +230,17 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest { |
| 140 | 230 | @SafeVarargs |
| 141 | 231 | private static SysSmsLogDO randomSmsLogDO(Consumer<SysSmsLogDO>... consumers) { |
| 142 | 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 | 234 | o.setTemplateType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 templateType 的范围 |
| 147 | 235 | o.setUserType(randomEle(UserTypeEnum.values()).getValue()); // 保证 userType 的范围 |
| 236 | + o.setReceiveStatus(randomEle(SysSmsReceiveStatusEnum.values()).getStatus()); // 保证 receiveStatus 的范围 | |
| 148 | 237 | }; |
| 149 | 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 | } | ... | ... |