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 | 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 | } |