Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
bd5706bf
提交
bd5706bf
authored
2月 03, 2023
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完善 notify 单元测试
上级
4d42b883
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
121 行增加
和
8 行删除
+121
-8
NotifySendServiceImpl.java
...o/module/system/service/notify/NotifySendServiceImpl.java
+6
-5
MailTemplateServiceImplTest.java
...dule/system/service/mail/MailTemplateServiceImplTest.java
+1
-1
NotifyMessageServiceImplTest.java
...e/system/service/notify/NotifyMessageServiceImplTest.java
+14
-0
NotifySendServiceImplTest.java
...dule/system/service/notify/NotifySendServiceImplTest.java
+58
-2
NotifyTemplateServiceImplTest.java
.../system/service/notify/NotifyTemplateServiceImplTest.java
+42
-0
没有找到文件。
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/notify/NotifySendServiceImpl.java
浏览文件 @
bd5706bf
...
...
@@ -13,7 +13,8 @@ import java.util.Map;
import
java.util.Objects
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.*;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.
NOTICE_NOT_FOUND
;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.
NOTIFY_SEND_TEMPLATE_PARAM_MISS
;
/**
* 站内信发送 Service 实现类
...
...
@@ -44,13 +45,13 @@ public class NotifySendServiceImpl implements NotifySendService {
@Override
public
Long
sendSingleNotify
(
Long
userId
,
Integer
userType
,
String
templateCode
,
Map
<
String
,
Object
>
templateParams
)
{
// 校验模版
NotifyTemplateDO
template
=
checkNotifyTemplateValid
(
templateCode
);
NotifyTemplateDO
template
=
validateNotifyTemplate
(
templateCode
);
if
(
Objects
.
equals
(
template
.
getStatus
(),
CommonStatusEnum
.
DISABLE
.
getStatus
()))
{
log
.
info
(
"[sendSingleNotify][模版({})已经关闭,无法给用户({}/{})发送]"
,
templateCode
,
userId
,
userType
);
return
null
;
}
// 校验参数
check
TemplateParams
(
template
,
templateParams
);
validate
TemplateParams
(
template
,
templateParams
);
// 发送站内信
String
content
=
notifyTemplateService
.
formatNotifyTemplateContent
(
template
.
getContent
(),
templateParams
);
...
...
@@ -58,7 +59,7 @@ public class NotifySendServiceImpl implements NotifySendService {
}
@VisibleForTesting
public
NotifyTemplateDO
checkNotifyTemplateValid
(
String
templateCode
)
{
public
NotifyTemplateDO
validateNotifyTemplate
(
String
templateCode
)
{
// 获得站内信模板。考虑到效率,从缓存中获取
NotifyTemplateDO
template
=
notifyTemplateService
.
getNotifyTemplateByCodeFromCache
(
templateCode
);
// 站内信模板不存在
...
...
@@ -75,7 +76,7 @@ public class NotifySendServiceImpl implements NotifySendService {
* @param templateParams 参数列表
*/
@VisibleForTesting
public
void
check
TemplateParams
(
NotifyTemplateDO
template
,
Map
<
String
,
Object
>
templateParams
)
{
public
void
validate
TemplateParams
(
NotifyTemplateDO
template
,
Map
<
String
,
Object
>
templateParams
)
{
template
.
getParams
().
forEach
(
key
->
{
Object
value
=
templateParams
.
get
(
key
);
if
(
value
==
null
)
{
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateServiceImplTest.java
浏览文件 @
bd5706bf
...
...
@@ -181,7 +181,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest {
}
@Test
public
void
testGetTemplate
()
{
public
void
testGet
Mail
Template
()
{
// mock 数据
MailTemplateDO
dbMailTemplate
=
randomPojo
(
MailTemplateDO
.
class
);
mailTemplateMapper
.
insert
(
dbMailTemplate
);
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/notify/NotifyMessageServiceImplTest.java
浏览文件 @
bd5706bf
...
...
@@ -108,6 +108,20 @@ public class NotifyMessageServiceImplTest extends BaseDbUnitTest {
assertPojoEquals
(
dbNotifyMessage
,
pageResult
.
getList
().
get
(
0
));
}
@Test
public
void
testGetNotifyMessage
()
{
// mock 数据
NotifyMessageDO
dbNotifyMessage
=
randomPojo
(
NotifyMessageDO
.
class
,
o
->
o
.
setTemplateParams
(
randomTemplateParams
()));
notifyMessageMapper
.
insert
(
dbNotifyMessage
);
// 准备参数
Long
id
=
dbNotifyMessage
.
getId
();
// 调用
NotifyMessageDO
notifyMessage
=
notifyMessageService
.
getNotifyMessage
(
id
);
assertPojoEquals
(
dbNotifyMessage
,
notifyMessage
);
}
@Test
public
void
testGetMyNotifyMessagePage
()
{
// mock 数据
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/notify/NotifySendServiceImplTest.java
浏览文件 @
bd5706bf
...
...
@@ -33,6 +33,62 @@ class NotifySendServiceImplTest extends BaseMockitoUnitTest {
@Mock
private
NotifyMessageService
notifyMessageService
;
@Test
public
void
testSendSingleNotifyToAdmin
()
{
// 准备参数
Long
userId
=
randomLongId
();
String
templateCode
=
randomString
();
Map
<
String
,
Object
>
templateParams
=
MapUtil
.<
String
,
Object
>
builder
().
put
(
"code"
,
"1234"
)
.
put
(
"op"
,
"login"
).
build
();
// mock NotifyTemplateService 的方法
NotifyTemplateDO
template
=
randomPojo
(
NotifyTemplateDO
.
class
,
o
->
{
o
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
o
.
setContent
(
"验证码为{code}, 操作为{op}"
);
o
.
setParams
(
Lists
.
newArrayList
(
"code"
,
"op"
));
});
when
(
notifyTemplateService
.
getNotifyTemplateByCodeFromCache
(
eq
(
templateCode
))).
thenReturn
(
template
);
String
content
=
randomString
();
when
(
notifyTemplateService
.
formatNotifyTemplateContent
(
eq
(
template
.
getContent
()),
eq
(
templateParams
)))
.
thenReturn
(
content
);
// mock NotifyMessageService 的方法
Long
messageId
=
randomLongId
();
when
(
notifyMessageService
.
createNotifyMessage
(
eq
(
userId
),
eq
(
UserTypeEnum
.
ADMIN
.
getValue
()),
eq
(
template
),
eq
(
content
),
eq
(
templateParams
))).
thenReturn
(
messageId
);
// 调用
Long
resultMessageId
=
notifySendService
.
sendSingleNotifyToAdmin
(
userId
,
templateCode
,
templateParams
);
// 断言
assertEquals
(
messageId
,
resultMessageId
);
}
@Test
public
void
testSendSingleNotifyToMember
()
{
// 准备参数
Long
userId
=
randomLongId
();
String
templateCode
=
randomString
();
Map
<
String
,
Object
>
templateParams
=
MapUtil
.<
String
,
Object
>
builder
().
put
(
"code"
,
"1234"
)
.
put
(
"op"
,
"login"
).
build
();
// mock NotifyTemplateService 的方法
NotifyTemplateDO
template
=
randomPojo
(
NotifyTemplateDO
.
class
,
o
->
{
o
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
o
.
setContent
(
"验证码为{code}, 操作为{op}"
);
o
.
setParams
(
Lists
.
newArrayList
(
"code"
,
"op"
));
});
when
(
notifyTemplateService
.
getNotifyTemplateByCodeFromCache
(
eq
(
templateCode
))).
thenReturn
(
template
);
String
content
=
randomString
();
when
(
notifyTemplateService
.
formatNotifyTemplateContent
(
eq
(
template
.
getContent
()),
eq
(
templateParams
)))
.
thenReturn
(
content
);
// mock NotifyMessageService 的方法
Long
messageId
=
randomLongId
();
when
(
notifyMessageService
.
createNotifyMessage
(
eq
(
userId
),
eq
(
UserTypeEnum
.
MEMBER
.
getValue
()),
eq
(
template
),
eq
(
content
),
eq
(
templateParams
))).
thenReturn
(
messageId
);
// 调用
Long
resultMessageId
=
notifySendService
.
sendSingleNotifyToMember
(
userId
,
templateCode
,
templateParams
);
// 断言
assertEquals
(
messageId
,
resultMessageId
);
}
/**
* 发送成功,当短信模板开启时
*/
...
...
@@ -99,7 +155,7 @@ class NotifySendServiceImplTest extends BaseMockitoUnitTest {
// mock 方法
// 调用,并断言异常
assertServiceException
(()
->
notifySendService
.
checkNotifyTemplateValid
(
templateCode
),
assertServiceException
(()
->
notifySendService
.
validateNotifyTemplate
(
templateCode
),
NOTICE_NOT_FOUND
);
}
...
...
@@ -112,7 +168,7 @@ class NotifySendServiceImplTest extends BaseMockitoUnitTest {
// mock 方法
// 调用,并断言异常
assertServiceException
(()
->
notifySendService
.
check
TemplateParams
(
template
,
templateParams
),
assertServiceException
(()
->
notifySendService
.
validate
TemplateParams
(
template
,
templateParams
),
NOTIFY_SEND_TEMPLATE_PARAM_MISS
,
"code"
);
}
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/notify/NotifyTemplateServiceImplTest.java
浏览文件 @
bd5706bf
...
...
@@ -14,6 +14,8 @@ import org.springframework.boot.test.mock.mockito.MockBean;
import
org.springframework.context.annotation.Import
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
LocalDateTimeUtils
.
buildBetweenTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
LocalDateTimeUtils
.
buildTime
;
...
...
@@ -143,4 +145,44 @@ public class NotifyTemplateServiceImplTest extends BaseDbUnitTest {
assertPojoEquals
(
dbNotifyTemplate
,
pageResult
.
getList
().
get
(
0
));
}
@Test
public
void
testGetNotifyTemplate
()
{
// mock 数据
NotifyTemplateDO
dbNotifyTemplate
=
randomPojo
(
NotifyTemplateDO
.
class
);
notifyTemplateMapper
.
insert
(
dbNotifyTemplate
);
// 准备参数
Long
id
=
dbNotifyTemplate
.
getId
();
// 调用
NotifyTemplateDO
notifyTemplate
=
notifyTemplateService
.
getNotifyTemplate
(
id
);
// 断言
assertPojoEquals
(
dbNotifyTemplate
,
notifyTemplate
);
}
@Test
public
void
testGetNotifyTemplateByCodeFromCache
()
{
// mock 数据
NotifyTemplateDO
dbNotifyTemplate
=
randomPojo
(
NotifyTemplateDO
.
class
);
notifyTemplateMapper
.
insert
(
dbNotifyTemplate
);
notifyTemplateService
.
initLocalCache
();
// 准备参数
String
code
=
dbNotifyTemplate
.
getCode
();
// 调用
NotifyTemplateDO
notifyTemplate
=
notifyTemplateService
.
getNotifyTemplateByCodeFromCache
(
code
);
// 断言
assertPojoEquals
(
dbNotifyTemplate
,
notifyTemplate
);
}
@Test
public
void
testFormatNotifyTemplateContent
()
{
// 准备参数
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"name"
,
"小红"
);
params
.
put
(
"what"
,
"饭"
);
// 调用,并断言
assertEquals
(
"小红,你好,饭吃了吗?"
,
notifyTemplateService
.
formatNotifyTemplateContent
(
"{name},你好,{what}吃了吗?"
,
params
));
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论