Commit f0d2c7a58a60cecedeb1e44c635e501b3c024b67

Authored by YunaiV
1 parent c0b029b2

邮箱模块:完善 log 的单元测试

yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogPageReqVO.java
@@ -23,7 +23,7 @@ public class MailLogPageReqVO extends PageParam { @@ -23,7 +23,7 @@ public class MailLogPageReqVO extends PageParam {
23 private Long userId; 23 private Long userId;
24 24
25 @ApiModelProperty(value = "用户类型", example = "2", notes = "参见 UserTypeEnum 枚举") 25 @ApiModelProperty(value = "用户类型", example = "2", notes = "参见 UserTypeEnum 枚举")
26 - private Byte userType; 26 + private Integer userType;
27 27
28 @ApiModelProperty(value = "接收邮箱地址", example = "76854@qq.com", notes = "模糊匹配") 28 @ApiModelProperty(value = "接收邮箱地址", example = "76854@qq.com", notes = "模糊匹配")
29 private String toMail; 29 private String toMail;
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImplTest.java 0 → 100755
  1 +package cn.iocoder.yudao.module.system.service.mail;
  2 +
  3 +import cn.hutool.core.map.MapUtil;
  4 +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
  7 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO;
  8 +import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
  9 +import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO;
  10 +import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
  11 +import cn.iocoder.yudao.module.system.dal.mysql.mail.MailLogMapper;
  12 +import cn.iocoder.yudao.module.system.enums.mail.MailSendStatusEnum;
  13 +import org.junit.jupiter.api.Test;
  14 +import org.springframework.context.annotation.Import;
  15 +
  16 +import javax.annotation.Resource;
  17 +import java.util.Map;
  18 +
  19 +import static cn.hutool.core.util.RandomUtil.randomEle;
  20 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
  21 +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
  22 +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
  23 +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
  24 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
  25 +import static org.junit.jupiter.api.Assertions.*;
  26 +
  27 +/**
  28 +* {@link MailLogServiceImpl} 的单元测试类
  29 +*
  30 +* @author 芋道源码
  31 +*/
  32 +@Import(MailLogServiceImpl.class)
  33 +public class MailLogServiceImplTest extends BaseDbUnitTest {
  34 +
  35 + @Resource
  36 + private MailLogServiceImpl mailLogService;
  37 +
  38 + @Resource
  39 + private MailLogMapper mailLogMapper;
  40 +
  41 + @Test
  42 + public void testCreateMailLog() {
  43 + // 准备参数
  44 + Long userId = randomLongId();
  45 + Integer userType = randomEle(UserTypeEnum.values()).getValue();
  46 + String toMail = randomEmail();
  47 + MailAccountDO account = randomPojo(MailAccountDO.class);
  48 + MailTemplateDO template = randomPojo(MailTemplateDO.class);
  49 + String templateContent = randomString();
  50 + Map<String, Object> templateParams = randomTemplateParams();
  51 + Boolean isSend = true;
  52 + // mock 方法
  53 +
  54 + // 调用
  55 + Long logId = mailLogService.createMailLog(userId, userType, toMail, account, template, templateContent, templateParams, isSend);
  56 + // 断言
  57 + MailLogDO log = mailLogMapper.selectById(logId);
  58 + assertNotNull(log);
  59 + assertEquals(MailSendStatusEnum.INIT.getStatus(), log.getSendStatus());
  60 + assertEquals(userId, log.getUserId());
  61 + assertEquals(userType, log.getUserType());
  62 + assertEquals(toMail, log.getToMail());
  63 + assertEquals(account.getId(), log.getAccountId());
  64 + assertEquals(account.getMail(), log.getFromMail());
  65 + assertEquals(template.getId(), log.getTemplateId());
  66 + assertEquals(template.getCode(), log.getTemplateCode());
  67 + assertEquals(template.getNickname(), log.getTemplateNickname());
  68 + assertEquals(template.getTitle(), log.getTemplateTitle());
  69 + assertEquals(templateContent, log.getTemplateContent());
  70 + assertEquals(templateParams, log.getTemplateParams());
  71 + }
  72 +
  73 + @Test
  74 + public void testUpdateMailSendResult_success() {
  75 + // mock 数据
  76 + MailLogDO log = randomPojo(MailLogDO.class, o -> {
  77 + o.setSendStatus(MailSendStatusEnum.INIT.getStatus());
  78 + o.setSendTime(null).setSendMessageId(null).setSendException(null)
  79 + .setTemplateParams(randomTemplateParams());
  80 + });
  81 + mailLogMapper.insert(log);
  82 + // 准备参数
  83 + Long logId = log.getId();
  84 + String messageId = randomString();
  85 +
  86 + // 调用
  87 + mailLogService.updateMailSendResult(logId, messageId, null);
  88 + // 断言
  89 + MailLogDO dbLog = mailLogMapper.selectById(logId);
  90 + assertEquals(MailSendStatusEnum.SUCCESS.getStatus(), dbLog.getSendStatus());
  91 + assertNotNull(dbLog.getSendTime());
  92 + assertEquals(messageId, dbLog.getSendMessageId());
  93 + assertNull(dbLog.getSendException());
  94 + }
  95 +
  96 + @Test
  97 + public void testUpdateMailSendResult_exception() {
  98 + // mock 数据
  99 + MailLogDO log = randomPojo(MailLogDO.class, o -> {
  100 + o.setSendStatus(MailSendStatusEnum.INIT.getStatus());
  101 + o.setSendTime(null).setSendMessageId(null).setSendException(null)
  102 + .setTemplateParams(randomTemplateParams());
  103 + });
  104 + mailLogMapper.insert(log);
  105 + // 准备参数
  106 + Long logId = log.getId();
  107 + Exception exception = new NullPointerException("测试异常");
  108 +
  109 + // 调用
  110 + mailLogService.updateMailSendResult(logId, null, exception);
  111 + // 断言
  112 + MailLogDO dbLog = mailLogMapper.selectById(logId);
  113 + assertEquals(MailSendStatusEnum.FAILURE.getStatus(), dbLog.getSendStatus());
  114 + assertNotNull(dbLog.getSendTime());
  115 + assertNull(dbLog.getSendMessageId());
  116 + assertEquals("NullPointerException: 测试异常", dbLog.getSendException());
  117 + }
  118 +
  119 + @Test
  120 + public void testGetMailLogPage() {
  121 + // mock 数据
  122 + MailLogDO dbMailLog = randomPojo(MailLogDO.class, o -> { // 等会查询到
  123 + o.setUserId(1L);
  124 + o.setUserType(UserTypeEnum.ADMIN.getValue());
  125 + o.setToMail("768@qq.com");
  126 + o.setAccountId(10L);
  127 + o.setTemplateId(100L);
  128 + o.setSendStatus(MailSendStatusEnum.INIT.getStatus());
  129 + o.setSendTime(buildTime(2023, 2, 10));
  130 + o.setTemplateParams(randomTemplateParams());
  131 + });
  132 + mailLogMapper.insert(dbMailLog);
  133 + // 测试 userId 不匹配
  134 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserId(2L)));
  135 + // 测试 userType 不匹配
  136 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserType(UserTypeEnum.MEMBER.getValue())));
  137 + // 测试 toMail 不匹配
  138 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setToMail("788@.qq.com")));
  139 + // 测试 accountId 不匹配
  140 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setAccountId(11L)));
  141 + // 测试 templateId 不匹配
  142 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setTemplateId(101L)));
  143 + // 测试 sendStatus 不匹配
  144 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendStatus(MailSendStatusEnum.SUCCESS.getStatus())));
  145 + // 测试 sendTime 不匹配
  146 + mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendTime(buildTime(2023, 3, 10))));
  147 + // 准备参数
  148 + MailLogPageReqVO reqVO = new MailLogPageReqVO();
  149 + reqVO.setUserId(1L);
  150 + reqVO.setUserType(UserTypeEnum.ADMIN.getValue());
  151 + reqVO.setToMail("768");
  152 + reqVO.setAccountId(10L);
  153 + reqVO.setTemplateId(100L);
  154 + reqVO.setSendStatus(MailSendStatusEnum.INIT.getStatus());
  155 + reqVO.setSendTime((buildBetweenTime(2023, 2, 1, 2023, 2, 15)));
  156 +
  157 + // 调用
  158 + PageResult<MailLogDO> pageResult = mailLogService.getMailLogPage(reqVO);
  159 + // 断言
  160 + assertEquals(1, pageResult.getTotal());
  161 + assertEquals(1, pageResult.getList().size());
  162 + assertPojoEquals(dbMailLog, pageResult.getList().get(0));
  163 + }
  164 +
  165 + private static Map<String, Object> randomTemplateParams() {
  166 + return MapUtil.<String, Object>builder().put(randomString(), randomString())
  167 + .put(randomString(), randomString()).build();
  168 + }
  169 +}
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceTest.java
@@ -235,7 +235,6 @@ public class SmsLogServiceTest extends BaseDbUnitTest { @@ -235,7 +235,6 @@ public class SmsLogServiceTest extends BaseDbUnitTest {
235 return randomPojo(SmsLogDO.class, ArrayUtils.append(consumer, consumers)); 235 return randomPojo(SmsLogDO.class, ArrayUtils.append(consumer, consumers));
236 } 236 }
237 237
238 -  
239 private static Map<String, Object> randomTemplateParams() { 238 private static Map<String, Object> randomTemplateParams() {
240 return MapUtil.<String, Object>builder().put(randomString(), randomString()) 239 return MapUtil.<String, Object>builder().put(randomString(), randomString())
241 .put(randomString(), randomString()).build(); 240 .put(randomString(), randomString()).build();
yudao-module-system/yudao-module-system-biz/src/test/resources/sql/clean.sql
@@ -27,3 +27,4 @@ DELETE FROM &quot;system_oauth2_refresh_token&quot;; @@ -27,3 +27,4 @@ DELETE FROM &quot;system_oauth2_refresh_token&quot;;
27 DELETE FROM "system_oauth2_code"; 27 DELETE FROM "system_oauth2_code";
28 DELETE FROM "system_mail_account"; 28 DELETE FROM "system_mail_account";
29 DELETE FROM "system_mail_template"; 29 DELETE FROM "system_mail_template";
  30 +DELETE FROM "system_mail_log";
yudao-module-system/yudao-module-system-biz/src/test/resources/sql/create_tables.sql
@@ -601,3 +601,28 @@ CREATE TABLE IF NOT EXISTS &quot;system_mail_template&quot; ( @@ -601,3 +601,28 @@ CREATE TABLE IF NOT EXISTS &quot;system_mail_template&quot; (
601 "deleted" bit NOT NULL DEFAULT FALSE, 601 "deleted" bit NOT NULL DEFAULT FALSE,
602 PRIMARY KEY ("id") 602 PRIMARY KEY ("id")
603 ) COMMENT '邮件模版表'; 603 ) COMMENT '邮件模版表';
  604 +
  605 +CREATE TABLE IF NOT EXISTS "system_mail_log" (
  606 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  607 + "user_id" bigint,
  608 + "user_type" varchar,
  609 + "to_mail" varchar NOT NULL,
  610 + "account_id" bigint NOT NULL,
  611 + "from_mail" varchar NOT NULL,
  612 + "template_id" bigint NOT NULL,
  613 + "template_code" varchar NOT NULL,
  614 + "template_nickname" varchar,
  615 + "template_title" varchar NOT NULL,
  616 + "template_content" varchar NOT NULL,
  617 + "template_params" varchar NOT NULL,
  618 + "send_status" varchar NOT NULL,
  619 + "send_time" datetime,
  620 + "send_message_id" varchar,
  621 + "send_exception" varchar,
  622 + "creator" varchar DEFAULT '',
  623 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  624 + "updater" varchar DEFAULT '',
  625 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  626 + "deleted" bit NOT NULL DEFAULT FALSE,
  627 + PRIMARY KEY ("id")
  628 +) COMMENT '邮件日志表';