houzhongyi
2024-07-11 e7c1260db32209a078a962aaa0ad5492c35774fb
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.system.service.notify;
H 2
3 import com.iailab.framework.common.enums.CommonStatusEnum;
4 import com.iailab.framework.common.pojo.PageResult;
5 import com.iailab.framework.test.core.ut.BaseDbUnitTest;
6 import com.iailab.module.system.controller.admin.notify.vo.template.NotifyTemplatePageReqVO;
7 import com.iailab.module.system.controller.admin.notify.vo.template.NotifyTemplateSaveReqVO;
8 import com.iailab.module.system.dal.dataobject.notify.NotifyTemplateDO;
9 import com.iailab.module.system.dal.mysql.notify.NotifyTemplateMapper;
10 import org.junit.jupiter.api.Test;
11 import org.springframework.context.annotation.Import;
12
13 import javax.annotation.Resource;
14 import java.util.HashMap;
15 import java.util.Map;
16
17 import static com.iailab.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
18 import static com.iailab.framework.common.util.date.LocalDateTimeUtils.buildTime;
19 import static com.iailab.framework.common.util.object.ObjectUtils.cloneIgnoreId;
20 import static com.iailab.framework.test.core.util.AssertUtils.assertPojoEquals;
21 import static com.iailab.framework.test.core.util.AssertUtils.assertServiceException;
22 import static com.iailab.framework.test.core.util.RandomUtils.*;
23 import static com.iailab.module.system.enums.ErrorCodeConstants.NOTIFY_TEMPLATE_NOT_EXISTS;
24 import static org.junit.jupiter.api.Assertions.*;
25
26 /**
27  * {@link NotifyTemplateServiceImpl} 的单元测试类
28  *
29  * @author iailab
30  */
31 @Import(NotifyTemplateServiceImpl.class)
32 public class NotifyTemplateServiceImplTest extends BaseDbUnitTest {
33
34     @Resource
35     private NotifyTemplateServiceImpl notifyTemplateService;
36
37     @Resource
38     private NotifyTemplateMapper notifyTemplateMapper;
39
40     @Test
41     public void testCreateNotifyTemplate_success() {
42         // 准备参数
43         NotifyTemplateSaveReqVO reqVO = randomPojo(NotifyTemplateSaveReqVO.class,
44                 o -> o.setStatus(randomCommonStatus()))
45                 .setId(null); // 防止 id 被赋值
46
47         // 调用
48         Long notifyTemplateId = notifyTemplateService.createNotifyTemplate(reqVO);
49         // 断言
50         assertNotNull(notifyTemplateId);
51         // 校验记录的属性是否正确
52         NotifyTemplateDO notifyTemplate = notifyTemplateMapper.selectById(notifyTemplateId);
53         assertPojoEquals(reqVO, notifyTemplate, "id");
54     }
55
56     @Test
57     public void testUpdateNotifyTemplate_success() {
58         // mock 数据
59         NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class);
60         notifyTemplateMapper.insert(dbNotifyTemplate);// @Sql: 先插入出一条存在的数据
61         // 准备参数
62         NotifyTemplateSaveReqVO reqVO = randomPojo(NotifyTemplateSaveReqVO.class, o -> {
63             o.setId(dbNotifyTemplate.getId()); // 设置更新的 ID
64             o.setStatus(randomCommonStatus());
65         });
66
67         // 调用
68         notifyTemplateService.updateNotifyTemplate(reqVO);
69         // 校验是否更新正确
70         NotifyTemplateDO notifyTemplate = notifyTemplateMapper.selectById(reqVO.getId()); // 获取最新的
71         assertPojoEquals(reqVO, notifyTemplate);
72     }
73
74     @Test
75     public void testUpdateNotifyTemplate_notExists() {
76         // 准备参数
77         NotifyTemplateSaveReqVO reqVO = randomPojo(NotifyTemplateSaveReqVO.class);
78
79         // 调用, 并断言异常
80         assertServiceException(() -> notifyTemplateService.updateNotifyTemplate(reqVO), NOTIFY_TEMPLATE_NOT_EXISTS);
81     }
82
83     @Test
84     public void testDeleteNotifyTemplate_success() {
85         // mock 数据
86         NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class);
87         notifyTemplateMapper.insert(dbNotifyTemplate);// @Sql: 先插入出一条存在的数据
88         // 准备参数
89         Long id = dbNotifyTemplate.getId();
90
91         // 调用
92         notifyTemplateService.deleteNotifyTemplate(id);
93         // 校验数据不存在了
94         assertNull(notifyTemplateMapper.selectById(id));
95     }
96
97     @Test
98     public void testDeleteNotifyTemplate_notExists() {
99         // 准备参数
100         Long id = randomLongId();
101
102         // 调用, 并断言异常
103         assertServiceException(() -> notifyTemplateService.deleteNotifyTemplate(id), NOTIFY_TEMPLATE_NOT_EXISTS);
104     }
105
106     @Test
107     public void testGetNotifyTemplatePage() {
108         // mock 数据
109         NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class, o -> { // 等会查询到
110             o.setName("芋头");
111             o.setCode("test_01");
112             o.setStatus(CommonStatusEnum.ENABLE.getStatus());
113             o.setCreateTime(buildTime(2022, 2, 3));
114         });
115         notifyTemplateMapper.insert(dbNotifyTemplate);
116         // 测试 name 不匹配
117         notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setName("投")));
118         // 测试 code 不匹配
119         notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setCode("test_02")));
120         // 测试 status 不匹配
121         notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
122         // 测试 createTime 不匹配
123         notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, o -> o.setCreateTime(buildTime(2022, 1, 5))));
124         // 准备参数
125         NotifyTemplatePageReqVO reqVO = new NotifyTemplatePageReqVO();
126         reqVO.setName("芋");
127         reqVO.setCode("est_01");
128         reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
129         reqVO.setCreateTime(buildBetweenTime(2022, 2, 1, 2022, 2, 5));
130
131         // 调用
132         PageResult<NotifyTemplateDO> pageResult = notifyTemplateService.getNotifyTemplatePage(reqVO);
133         // 断言
134         assertEquals(1, pageResult.getTotal());
135         assertEquals(1, pageResult.getList().size());
136         assertPojoEquals(dbNotifyTemplate, pageResult.getList().get(0));
137     }
138
139     @Test
140     public void testGetNotifyTemplate() {
141         // mock 数据
142         NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class);
143         notifyTemplateMapper.insert(dbNotifyTemplate);
144         // 准备参数
145         Long id = dbNotifyTemplate.getId();
146
147         // 调用
148         NotifyTemplateDO notifyTemplate = notifyTemplateService.getNotifyTemplate(id);
149         // 断言
150         assertPojoEquals(dbNotifyTemplate, notifyTemplate);
151     }
152
153     @Test
154     public void testGetNotifyTemplateByCodeFromCache() {
155         // mock 数据
156         NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class);
157         notifyTemplateMapper.insert(dbNotifyTemplate);
158         // 准备参数
159         String code = dbNotifyTemplate.getCode();
160
161         // 调用
162         NotifyTemplateDO notifyTemplate = notifyTemplateService.getNotifyTemplateByCodeFromCache(code);
163         // 断言
164         assertPojoEquals(dbNotifyTemplate, notifyTemplate);
165     }
166
167     @Test
168     public void testFormatNotifyTemplateContent() {
169         // 准备参数
170         Map<String, Object> params = new HashMap<>();
171         params.put("name", "小红");
172         params.put("what", "饭");
173
174         // 调用,并断言
175         assertEquals("小红,你好,饭吃了吗?",
176                 notifyTemplateService.formatNotifyTemplateContent("{name},你好,{what}吃了吗?", params));
177     }
178 }