✅ 增加 sms/tenant/senstiveword 模块的单测覆盖率
parent
49aee82b6a
commit
efc9649fa5
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.sensitiveword;
|
|||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.sensitiveword.vo.SensitiveWordPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.sensitiveword.vo.SensitiveWordSaveVO;
|
||||
|
@ -13,6 +14,8 @@ import org.junit.jupiter.api.Test;
|
|||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -78,6 +81,35 @@ public class SensitiveWordServiceImplTest extends BaseDbUnitTest {
|
|||
assertNotNull(sensitiveWordService.getTagSensitiveWordTries().get("测试"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRefreshLocalCache() {
|
||||
// mock 数据
|
||||
SensitiveWordDO wordDO1 = randomPojo(SensitiveWordDO.class, o -> o.setName("傻瓜")
|
||||
.setTags(singletonList("论坛")).setStatus(CommonStatusEnum.ENABLE.getStatus()));
|
||||
wordDO1.setUpdateTime(LocalDateTime.now());
|
||||
sensitiveWordMapper.insert(wordDO1);
|
||||
sensitiveWordService.initLocalCache();
|
||||
// mock 数据 ②
|
||||
SensitiveWordDO wordDO2 = randomPojo(SensitiveWordDO.class, o -> o.setName("笨蛋")
|
||||
.setTags(singletonList("蔬菜")).setStatus(CommonStatusEnum.ENABLE.getStatus()));
|
||||
wordDO2.setUpdateTime(LocalDateTimeUtils.addTime(Duration.ofMinutes(1))); // 避免时间相同
|
||||
sensitiveWordMapper.insert(wordDO2);
|
||||
|
||||
// 调用
|
||||
sensitiveWordService.refreshLocalCache();
|
||||
// 断言 sensitiveWordTagsCache 缓存
|
||||
assertEquals(SetUtils.asSet("论坛", "蔬菜"), sensitiveWordService.getSensitiveWordTagSet());
|
||||
// 断言 sensitiveWordCache
|
||||
assertEquals(2, sensitiveWordService.getSensitiveWordCache().size());
|
||||
assertPojoEquals(wordDO1, sensitiveWordService.getSensitiveWordCache().get(0));
|
||||
assertPojoEquals(wordDO2, sensitiveWordService.getSensitiveWordCache().get(1));
|
||||
// 断言 tagSensitiveWordTries 缓存
|
||||
assertNotNull(sensitiveWordService.getDefaultSensitiveWordTrie());
|
||||
assertEquals(2, sensitiveWordService.getTagSensitiveWordTries().size());
|
||||
assertNotNull(sensitiveWordService.getTagSensitiveWordTries().get("论坛"));
|
||||
assertNotNull(sensitiveWordService.getTagSensitiveWordTries().get("蔬菜"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateSensitiveWord_success() {
|
||||
// 准备参数
|
||||
|
|
|
@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer;
|
|||
import cn.iocoder.yudao.module.system.service.member.MemberService;
|
||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||
import org.assertj.core.util.Lists;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
|
@ -35,7 +36,7 @@ import static org.mockito.Mockito.*;
|
|||
public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
||||
|
||||
@InjectMocks
|
||||
private SmsSendServiceImpl smsService;
|
||||
private SmsSendServiceImpl smsSendService;
|
||||
|
||||
@Mock
|
||||
private AdminUserService adminUserService;
|
||||
|
@ -80,7 +81,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
eq(content), eq(templateParams))).thenReturn(smsLogId);
|
||||
|
||||
// 调用
|
||||
Long resultSmsLogId = smsService.sendSingleSmsToAdmin(null, userId, templateCode, templateParams);
|
||||
Long resultSmsLogId = smsSendService.sendSingleSmsToAdmin(null, userId, templateCode, templateParams);
|
||||
// 断言
|
||||
assertEquals(smsLogId, resultSmsLogId);
|
||||
// 断言调用
|
||||
|
@ -119,7 +120,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
eq(content), eq(templateParams))).thenReturn(smsLogId);
|
||||
|
||||
// 调用
|
||||
Long resultSmsLogId = smsService.sendSingleSmsToMember(null, userId, templateCode, templateParams);
|
||||
Long resultSmsLogId = smsSendService.sendSingleSmsToMember(null, userId, templateCode, templateParams);
|
||||
// 断言
|
||||
assertEquals(smsLogId, resultSmsLogId);
|
||||
// 断言调用
|
||||
|
@ -159,7 +160,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
eq(content), eq(templateParams))).thenReturn(smsLogId);
|
||||
|
||||
// 调用
|
||||
Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams);
|
||||
Long resultSmsLogId = smsSendService.sendSingleSms(mobile, userId, userType, templateCode, templateParams);
|
||||
// 断言
|
||||
assertEquals(smsLogId, resultSmsLogId);
|
||||
// 断言调用
|
||||
|
@ -199,7 +200,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
eq(content), eq(templateParams))).thenReturn(smsLogId);
|
||||
|
||||
// 调用
|
||||
Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams);
|
||||
Long resultSmsLogId = smsSendService.sendSingleSms(mobile, userId, userType, templateCode, templateParams);
|
||||
// 断言
|
||||
assertEquals(smsLogId, resultSmsLogId);
|
||||
// 断言调用
|
||||
|
@ -214,7 +215,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
// mock 方法
|
||||
|
||||
// 调用,并断言异常
|
||||
assertServiceException(() -> smsService.validateSmsTemplate(templateCode),
|
||||
assertServiceException(() -> smsSendService.validateSmsTemplate(templateCode),
|
||||
SMS_SEND_TEMPLATE_NOT_EXISTS);
|
||||
}
|
||||
|
||||
|
@ -227,7 +228,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
// mock 方法
|
||||
|
||||
// 调用,并断言异常
|
||||
assertServiceException(() -> smsService.buildTemplateParams(template, templateParams),
|
||||
assertServiceException(() -> smsSendService.buildTemplateParams(template, templateParams),
|
||||
SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code");
|
||||
}
|
||||
|
||||
|
@ -237,10 +238,24 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
// mock 方法
|
||||
|
||||
// 调用,并断言异常
|
||||
assertServiceException(() -> smsService.validateMobile(null),
|
||||
assertServiceException(() -> smsSendService.validateMobile(null),
|
||||
SMS_SEND_MOBILE_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendBatchNotify() {
|
||||
// 准备参数
|
||||
// mock 方法
|
||||
|
||||
// 调用
|
||||
UnsupportedOperationException exception = Assertions.assertThrows(
|
||||
UnsupportedOperationException.class,
|
||||
() -> smsSendService.sendBatchSms(null, null, null, null, null)
|
||||
);
|
||||
// 断言
|
||||
assertEquals("暂时不支持该操作,感兴趣可以实现该功能哟!", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testDoSendSms() throws Throwable {
|
||||
|
@ -255,7 +270,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
eq(message.getTemplateParams()))).thenReturn(sendResult);
|
||||
|
||||
// 调用
|
||||
smsService.doSendSms(message);
|
||||
smsSendService.doSendSms(message);
|
||||
// 断言
|
||||
verify(smsLogService).updateSmsSendResult(eq(message.getLogId()),
|
||||
eq(sendResult.getSuccess()), eq(sendResult.getApiCode()),
|
||||
|
@ -274,7 +289,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
|
|||
List<SmsReceiveRespDTO> receiveResults = randomPojoList(SmsReceiveRespDTO.class);
|
||||
|
||||
// 调用
|
||||
smsService.receiveSmsStatus(channelCode, text);
|
||||
smsSendService.receiveSmsStatus(channelCode, text);
|
||||
// 断言
|
||||
receiveResults.forEach(result -> smsLogService.updateSmsReceiveResult(eq(result.getLogId()), eq(result.getSuccess()),
|
||||
eq(result.getReceiveTime()), eq(result.getErrorCode()), eq(result.getErrorCode())));
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.system.service.sms;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
|
||||
|
@ -21,6 +22,7 @@ import org.springframework.context.annotation.Import;
|
|||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static cn.hutool.core.util.RandomUtil.randomEle;
|
||||
|
@ -48,6 +50,19 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
|
|||
@MockBean
|
||||
private SmsClient smsClient;
|
||||
|
||||
@Test
|
||||
public void testFormatSmsTemplateContent() {
|
||||
// 准备参数
|
||||
String content = "正在进行登录操作{operation},您的验证码是{code}";
|
||||
Map<String, Object> params = MapUtil.<String, Object>builder("operation", "登录")
|
||||
.put("code", "1234").build();
|
||||
|
||||
// 调用
|
||||
String result = smsTemplateService.formatSmsTemplateContent(content, params);
|
||||
// 断言
|
||||
assertEquals("正在进行登录操作登录,您的验证码是1234", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseTemplateContentParams() {
|
||||
// 准备参数
|
||||
|
@ -156,6 +171,34 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
|
|||
assertServiceException(() -> smsTemplateService.deleteSmsTemplate(id), SMS_TEMPLATE_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSmsTemplate() {
|
||||
// mock 数据
|
||||
SmsTemplateDO dbSmsTemplate = randomSmsTemplateDO();
|
||||
smsTemplateMapper.insert(dbSmsTemplate);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
Long id = dbSmsTemplate.getId();
|
||||
|
||||
// 调用
|
||||
SmsTemplateDO smsTemplate = smsTemplateService.getSmsTemplate(id);
|
||||
// 校验
|
||||
assertPojoEquals(dbSmsTemplate, smsTemplate);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSmsTemplateByCodeFromCache() {
|
||||
// mock 数据
|
||||
SmsTemplateDO dbSmsTemplate = randomSmsTemplateDO();
|
||||
smsTemplateMapper.insert(dbSmsTemplate);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
String code = dbSmsTemplate.getCode();
|
||||
|
||||
// 调用
|
||||
SmsTemplateDO smsTemplate = smsTemplateService.getSmsTemplateByCodeFromCache(code);
|
||||
// 校验
|
||||
assertPojoEquals(dbSmsTemplate, smsTemplate);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSmsTemplatePage() {
|
||||
// mock 数据
|
||||
|
@ -201,6 +244,22 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
|
|||
assertPojoEquals(dbSmsTemplate, pageResult.getList().get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSmsTemplateCountByChannelId() {
|
||||
// mock 数据
|
||||
SmsTemplateDO dbSmsTemplate = randomPojo(SmsTemplateDO.class, o -> o.setChannelId(1L));
|
||||
smsTemplateMapper.insert(dbSmsTemplate);
|
||||
// 测试 channelId 不匹配
|
||||
smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setChannelId(2L)));
|
||||
// 准备参数
|
||||
Long channelId = 1L;
|
||||
|
||||
// 调用
|
||||
Long count = smsTemplateService.getSmsTemplateCountByChannelId(channelId);
|
||||
// 断言
|
||||
assertEquals(1, count);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateSmsChannel_success() {
|
||||
// 准备参数
|
||||
|
|
|
@ -331,6 +331,18 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
|
|||
assertPojoEquals(result, dbTenant);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetTenantByWebsite() {
|
||||
// mock 数据
|
||||
TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setWebsite("https://www.iocoder.cn"));
|
||||
tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据
|
||||
|
||||
// 调用
|
||||
TenantDO result = tenantService.getTenantByWebsite("https://www.iocoder.cn");
|
||||
// 校验存在
|
||||
assertPojoEquals(result, dbTenant);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetTenantListByPackageId() {
|
||||
// mock 数据
|
||||
|
|
Loading…
Reference in New Issue