mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 18:49:06 +08:00 
			
		
		
		
	完成短信日志的单元测试
This commit is contained in:
		| @ -1,11 +1,14 @@ | ||||
| package cn.iocoder.dashboard.modules.system.service.sms; | ||||
|  | ||||
| import cn.hutool.core.map.MapUtil; | ||||
| import cn.iocoder.dashboard.BaseDbUnitTest; | ||||
| import cn.iocoder.dashboard.common.enums.UserTypeEnum; | ||||
| import cn.iocoder.dashboard.common.pojo.CommonResult; | ||||
| import cn.iocoder.dashboard.common.pojo.PageResult; | ||||
| import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; | ||||
| import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; | ||||
| import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; | ||||
| import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||||
| import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsLogMapper; | ||||
| import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum; | ||||
| import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; | ||||
| @ -17,16 +20,17 @@ import org.junit.jupiter.api.Test; | ||||
| import org.springframework.context.annotation.Import; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import java.util.HashMap; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.function.Consumer; | ||||
|  | ||||
| import static cn.hutool.core.util.RandomUtil.randomBoolean; | ||||
| import static cn.hutool.core.util.RandomUtil.randomEle; | ||||
| import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals; | ||||
| import static cn.iocoder.dashboard.util.RandomUtils.randomPojo; | ||||
| import static cn.iocoder.dashboard.util.RandomUtils.randomString; | ||||
| import static cn.iocoder.dashboard.util.RandomUtils.*; | ||||
| import static cn.iocoder.dashboard.util.date.DateUtils.buildTime; | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| import static org.junit.jupiter.api.Assertions.*; | ||||
|  | ||||
| /** | ||||
| * {@link SysSmsLogServiceImpl} 的单元测试类 | ||||
| @ -42,7 +46,93 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest { | ||||
|     @Resource | ||||
|     private SysSmsLogMapper smsLogMapper; | ||||
|  | ||||
|     @Test // TODO 请修改 null 为需要的值 | ||||
|     @Test | ||||
|     public void testCreateSmsLog() { | ||||
|         // 准备参数 | ||||
|         String mobile = randomString(); | ||||
|         Long userId = randomLongId(); | ||||
|         Integer userType = randomEle(UserTypeEnum.values()).getValue(); | ||||
|         Boolean isSend = randomBoolean(); | ||||
|         SysSmsTemplateDO templateDO = randomPojo(SysSmsTemplateDO.class, | ||||
|                 o -> o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType())); | ||||
|         String templateContent = randomString(); | ||||
|         Map<String, Object> templateParams = randomTemplateParams(); | ||||
|         // mock 方法 | ||||
|  | ||||
|         // 调用 | ||||
|         Long logId = smsLogService.createSmsLog(mobile, userId, userType, isSend, | ||||
|                 templateDO, templateContent, templateParams); | ||||
|         // 断言 | ||||
|         SysSmsLogDO logDO = smsLogMapper.selectById(logId); | ||||
|         assertEquals(isSend ? SysSmsSendStatusEnum.INIT.getStatus() : SysSmsSendStatusEnum.IGNORE.getStatus(), | ||||
|                 logDO.getSendStatus()); | ||||
|         assertEquals(mobile, logDO.getMobile()); | ||||
|         assertEquals(userType, logDO.getUserType()); | ||||
|         assertEquals(userId, logDO.getUserId()); | ||||
|         assertEquals(templateDO.getId(), logDO.getTemplateId()); | ||||
|         assertEquals(templateDO.getCode(), logDO.getTemplateCode()); | ||||
|         assertEquals(templateDO.getType(), logDO.getTemplateType()); | ||||
|         assertEquals(templateDO.getChannelId(), logDO.getChannelId()); | ||||
|         assertEquals(templateDO.getChannelCode(), logDO.getChannelCode()); | ||||
|         assertEquals(templateContent, logDO.getTemplateContent()); | ||||
|         assertEquals(templateParams, logDO.getTemplateParams()); | ||||
|         assertEquals(SysSmsReceiveStatusEnum.INIT.getStatus(), logDO.getReceiveStatus()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testUpdateSmsSendResult() { | ||||
|         // mock 数据 | ||||
|         SysSmsLogDO dbSmsLog = randomSmsLogDO( | ||||
|                 o -> o.setSendStatus(SysSmsSendStatusEnum.IGNORE.getStatus())); | ||||
|         smsLogMapper.insert(dbSmsLog); | ||||
|         // 准备参数 | ||||
|         Long id = dbSmsLog.getId(); | ||||
|         Integer sendCode = randomInteger(); | ||||
|         String sendMsg = randomString(); | ||||
|         String apiSendCode = randomString(); | ||||
|         String apiSendMsg = randomString(); | ||||
|         String apiRequestId = randomString(); | ||||
|         String apiSerialNo = randomString(); | ||||
|  | ||||
|         // 调用 | ||||
|         smsLogService.updateSmsSendResult(id, sendCode, sendMsg, | ||||
|                 apiSendCode, apiSendMsg, apiRequestId, apiSerialNo); | ||||
|         // 断言 | ||||
|         dbSmsLog = smsLogMapper.selectById(id); | ||||
|         assertEquals(CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS.getStatus() | ||||
|                 : SysSmsSendStatusEnum.FAILURE.getStatus(), dbSmsLog.getSendStatus()); | ||||
|         assertNotNull(dbSmsLog.getSendTime()); | ||||
|         assertEquals(sendMsg, dbSmsLog.getSendMsg()); | ||||
|         assertEquals(apiSendCode, dbSmsLog.getApiSendCode()); | ||||
|         assertEquals(apiSendMsg, dbSmsLog.getApiSendMsg()); | ||||
|         assertEquals(apiRequestId, dbSmsLog.getApiRequestId()); | ||||
|         assertEquals(apiSerialNo, dbSmsLog.getApiSerialNo()); | ||||
|     } | ||||
|  | ||||
|     public void testUpdateSmsReceiveResult() { | ||||
|         // mock 数据 | ||||
|         SysSmsLogDO dbSmsLog = randomSmsLogDO( | ||||
|                 o -> o.setReceiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus())); | ||||
|         smsLogMapper.insert(dbSmsLog); | ||||
|         // 准备参数 | ||||
|         Long id = dbSmsLog.getId(); | ||||
|         Boolean success = randomBoolean(); | ||||
|         Date receiveTime = randomDate(); | ||||
|         String apiReceiveCode = randomString(); | ||||
|         String apiReceiveMsg = randomString(); | ||||
|  | ||||
|         // 调用 | ||||
|         smsLogService.updateSmsReceiveResult(id, success, receiveTime, apiReceiveCode, apiReceiveMsg); | ||||
|         // 断言 | ||||
|         dbSmsLog = smsLogMapper.selectById(id); | ||||
|         assertEquals(success ? SysSmsReceiveStatusEnum.SUCCESS.getStatus() | ||||
|                 : SysSmsReceiveStatusEnum.FAILURE.getStatus(), dbSmsLog.getReceiveStatus()); | ||||
|         assertEquals(receiveTime, dbSmsLog.getReceiveTime()); | ||||
|         assertEquals(apiReceiveCode, dbSmsLog.getApiSendCode()); | ||||
|         assertEquals(apiReceiveMsg, dbSmsLog.getApiReceiveMsg()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testGetSmsLogPage() { | ||||
|        // mock 数据 | ||||
|        SysSmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到 | ||||
| @ -140,12 +230,17 @@ public class SysSmsLogServiceTest extends BaseDbUnitTest { | ||||
|     @SafeVarargs | ||||
|     private static SysSmsLogDO randomSmsLogDO(Consumer<SysSmsLogDO>... consumers) { | ||||
|         Consumer<SysSmsLogDO> consumer = (o) -> { | ||||
|             o.setTemplateParams(new HashMap<>()); | ||||
|             o.getTemplateParams().put(randomString(), randomString()); | ||||
|             o.getTemplateParams().put(randomString(), randomString()); | ||||
|             o.setTemplateParams(randomTemplateParams()); | ||||
|             o.setTemplateType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 templateType 的范围 | ||||
|             o.setUserType(randomEle(UserTypeEnum.values()).getValue()); // 保证 userType 的范围 | ||||
|             o.setReceiveStatus(randomEle(SysSmsReceiveStatusEnum.values()).getStatus()); // 保证 receiveStatus 的范围 | ||||
|         }; | ||||
|         return randomPojo(SysSmsLogDO.class, ArrayUtils.append(consumer, consumers)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private static Map<String, Object> randomTemplateParams() { | ||||
|         return MapUtil.<String, Object>builder().put(randomString(), randomString()) | ||||
|                 .put(randomString(), randomString()).build(); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV