Commit 9ca793919de904631c75663d9126d69ced514f4a

Authored by YunaiV
1 parent fed9feb0

完善 ErrorCodeServiceImpl 单元测试

yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java
... ... @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
4 4 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
5 5 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
6 6 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
7   -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
8 7 import org.apache.ibatis.annotations.Mapper;
9 8  
10 9 import java.util.List;
... ... @@ -19,9 +18,7 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
19 18 }
20 19  
21 20 default DeptDO selectByParentIdAndName(Long parentId, String name) {
22   - return selectOne(new LambdaQueryWrapper<DeptDO>()
23   - .eq(DeptDO::getParentId, parentId)
24   - .eq(DeptDO::getName, name));
  21 + return selectOne(DeptDO::getParentId, parentId, DeptDO::getName, name);
25 22 }
26 23  
27 24 default Long selectCountByParentId(Long parentId) {
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/PostMapper.java
... ... @@ -2,11 +2,10 @@ package cn.iocoder.yudao.module.system.dal.mysql.dept;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5   -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 6 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO;
7 7 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO;
8 8 import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
9   -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10 9 import org.apache.ibatis.annotations.Mapper;
11 10  
12 11 import java.util.Collection;
... ... @@ -16,31 +15,32 @@ import java.util.List;
16 15 public interface PostMapper extends BaseMapperX<PostDO> {
17 16  
18 17 default List<PostDO> selectList(Collection<Long> ids, Collection<Integer> statuses) {
19   - return selectList(new QueryWrapperX<PostDO>().inIfPresent("id", ids)
20   - .inIfPresent("status", statuses));
  18 + return selectList(new LambdaQueryWrapperX<PostDO>()
  19 + .inIfPresent(PostDO::getId, ids)
  20 + .inIfPresent(PostDO::getStatus, statuses));
21 21 }
22 22  
23 23 default PageResult<PostDO> selectPage(PostPageReqVO reqVO) {
24   - return selectPage(reqVO, new QueryWrapperX<PostDO>()
25   - .likeIfPresent("code", reqVO.getCode())
26   - .likeIfPresent("name", reqVO.getName())
27   - .eqIfPresent("status", reqVO.getStatus())
28   - .orderByDesc("id"));
  24 + return selectPage(reqVO, new LambdaQueryWrapperX<PostDO>()
  25 + .likeIfPresent(PostDO::getCode, reqVO.getCode())
  26 + .likeIfPresent(PostDO::getName, reqVO.getName())
  27 + .eqIfPresent(PostDO::getStatus, reqVO.getStatus())
  28 + .orderByDesc(PostDO::getId));
29 29 }
30 30  
31 31 default List<PostDO> selectList(PostExportReqVO reqVO) {
32   - return selectList(new QueryWrapperX<PostDO>()
33   - .likeIfPresent("code", reqVO.getCode())
34   - .likeIfPresent("name", reqVO.getName())
35   - .eqIfPresent("status", reqVO.getStatus()));
  32 + return selectList(new LambdaQueryWrapperX<PostDO>()
  33 + .likeIfPresent(PostDO::getCode, reqVO.getCode())
  34 + .likeIfPresent(PostDO::getName, reqVO.getName())
  35 + .eqIfPresent(PostDO::getStatus, reqVO.getStatus()));
36 36 }
37 37  
38 38 default PostDO selectByName(String name) {
39   - return selectOne(new QueryWrapper<PostDO>().eq("name", name));
  39 + return selectOne(PostDO::getName, name);
40 40 }
41 41  
42 42 default PostDO selectByCode(String code) {
43   - return selectOne(new QueryWrapper<PostDO>().eq("code", code));
  43 + return selectOne(PostDO::getCode, code);
44 44 }
45 45  
46 46 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/UserPostMapper.java
... ... @@ -28,7 +28,7 @@ public interface UserPostMapper extends BaseMapperX&lt;UserPostDO&gt; {
28 28 .in(UserPostDO::getPostId, postIds));
29 29 }
30 30  
31   - default void deleteByUserId(Long userId){
  31 + default void deleteByUserId(Long userId) {
32 32 delete(Wrappers.lambdaUpdate(UserPostDO.class).eq(UserPostDO::getUserId, userId));
33 33 }
34 34 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java
... ... @@ -17,13 +17,11 @@ import java.util.List;
17 17 public interface DictDataMapper extends BaseMapperX<DictDataDO> {
18 18  
19 19 default DictDataDO selectByDictTypeAndValue(String dictType, String value) {
20   - return selectOne(new LambdaQueryWrapper<DictDataDO>().eq(DictDataDO::getDictType, dictType)
21   - .eq(DictDataDO::getValue, value));
  20 + return selectOne(DictDataDO::getDictType, dictType, DictDataDO::getValue, value);
22 21 }
23 22  
24 23 default DictDataDO selectByDictTypeAndLabel(String dictType, String label) {
25   - return selectOne(new LambdaQueryWrapper<DictDataDO>().eq(DictDataDO::getDictType, dictType)
26   - .eq(DictDataDO::getLabel, label));
  24 + return selectOne(DictDataDO::getDictType, dictType, DictDataDO::getLabel, label);
27 25 }
28 26  
29 27 default List<DictDataDO> selectByDictTypeAndValues(String dictType, Collection<String> values) {
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/ErrorCodeMapper.java
... ... @@ -36,11 +36,11 @@ public interface ErrorCodeMapper extends BaseMapperX&lt;ErrorCodeDO&gt; {
36 36 }
37 37  
38 38 default List<ErrorCodeDO> selectListByCodes(Collection<Integer> codes) {
39   - return selectList(new LambdaQueryWrapperX<ErrorCodeDO>().in(ErrorCodeDO::getCode, codes));
  39 + return selectList(ErrorCodeDO::getCode, codes);
40 40 }
41 41  
42 42 default ErrorCodeDO selectByCode(Integer code) {
43   - return selectOne(new LambdaQueryWrapperX<ErrorCodeDO>().eq(ErrorCodeDO::getCode, code));
  43 + return selectOne(ErrorCodeDO::getCode, code);
44 44 }
45 45  
46 46 default List<ErrorCodeDO> selectListByApplicationNameAndUpdateTimeGt(String applicationName, LocalDateTime minUpdateTime) {
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeServiceImpl.java
... ... @@ -58,7 +58,7 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
58 58 @Override
59 59 public void updateErrorCode(ErrorCodeUpdateReqVO updateReqVO) {
60 60 // 校验存在
61   - this.validateErrorCodeExists(updateReqVO.getId());
  61 + validateErrorCodeExists(updateReqVO.getId());
62 62 // 校验 code 重复
63 63 validateCodeDuplicate(updateReqVO.getCode(), updateReqVO.getId());
64 64  
... ... @@ -71,7 +71,7 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
71 71 @Override
72 72 public void deleteErrorCode(Long id) {
73 73 // 校验存在
74   - this.validateErrorCodeExists(id);
  74 + validateErrorCodeExists(id);
75 75 // 删除
76 76 errorCodeMapper.deleteById(id);
77 77 }
... ... @@ -100,7 +100,7 @@ public class ErrorCodeServiceImpl implements ErrorCodeService {
100 100 }
101 101  
102 102 @VisibleForTesting
103   - public void validateErrorCodeExists(Long id) {
  103 + void validateErrorCodeExists(Long id) {
104 104 if (errorCodeMapper.selectById(id) == null) {
105 105 throw exception(ERROR_CODE_NOT_EXISTS);
106 106 }
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeServiceTest.java
... ... @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.system.service.errorcode;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
5   -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
6 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
7 6 import cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO;
  7 +import cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO;
8 8 import cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeCreateReqVO;
9 9 import cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeExportReqVO;
10 10 import cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodePageReqVO;
... ... @@ -22,7 +22,9 @@ import java.util.List;
22 22 import java.util.function.Consumer;
23 23  
24 24 import static cn.hutool.core.util.RandomUtil.randomEle;
  25 +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
25 26 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
  27 +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
26 28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
27 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
28 30 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
... ... @@ -57,7 +59,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
57 59 @Test
58 60 public void testUpdateErrorCode_success() {
59 61 // mock 数据
60   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO();
  62 + ErrorCodeDO dbErrorCode = randomErrorCodeDO();
61 63 errorCodeMapper.insert(dbErrorCode);// @Sql: 先插入出一条存在的数据
62 64 // 准备参数
63 65 ErrorCodeUpdateReqVO reqVO = randomPojo(ErrorCodeUpdateReqVO.class, o -> {
... ... @@ -75,7 +77,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
75 77 @Test
76 78 public void testDeleteErrorCode_success() {
77 79 // mock 数据
78   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO();
  80 + ErrorCodeDO dbErrorCode = randomErrorCodeDO();
79 81 errorCodeMapper.insert(dbErrorCode);// @Sql: 先插入出一条存在的数据
80 82 // 准备参数
81 83 Long id = dbErrorCode.getId();
... ... @@ -96,7 +98,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
96 98 reqVO.setApplicationName("tu");
97 99 reqVO.setCode(1);
98 100 reqVO.setMessage("ma");
99   - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 11, 1),buildTime(2020, 11, 30)}));
  101 + reqVO.setCreateTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30));
100 102  
101 103 // 调用
102 104 PageResult<ErrorCodeDO> pageResult = errorCodeService.getErrorCodePage(reqVO);
... ... @@ -110,7 +112,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
110 112 * 初始化 getErrorCodePage 方法的测试数据
111 113 */
112 114 private ErrorCodeDO initGetErrorCodePage() {
113   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO(o -> { // 等会查询到
  115 + ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> { // 等会查询到
114 116 o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType());
115 117 o.setApplicationName("tudou");
116 118 o.setCode(1);
... ... @@ -119,20 +121,20 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
119 121 });
120 122 errorCodeMapper.insert(dbErrorCode);
121 123 // 测试 type 不匹配
122   - errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setType(ErrorCodeTypeEnum.MANUAL_OPERATION.getType())));
  124 + errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setType(ErrorCodeTypeEnum.MANUAL_OPERATION.getType())));
123 125 // 测试 applicationName 不匹配
124   - errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setApplicationName("yuan")));
  126 + errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setApplicationName("yuan")));
125 127 // 测试 code 不匹配
126   - errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setCode(2)));
  128 + errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setCode(2)));
127 129 // 测试 message 不匹配
128   - errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setMessage("nai")));
  130 + errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setMessage("nai")));
129 131 // 测试 createTime 不匹配
130   - errorCodeMapper.insert(ObjectUtils.cloneIgnoreId(dbErrorCode, o -> o.setCreateTime(buildTime(2020, 12, 12))));
  132 + errorCodeMapper.insert(cloneIgnoreId(dbErrorCode, o -> o.setCreateTime(buildTime(2020, 12, 12))));
131 133 return dbErrorCode;
132 134 }
133 135  
134 136 @Test
135   - public void testGetErrorCodeList() {
  137 + public void testGetErrorCodeList_export() {
136 138 // mock 数据
137 139 ErrorCodeDO dbErrorCode = initGetErrorCodePage();
138 140 // 准备参数
... ... @@ -141,7 +143,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
141 143 reqVO.setApplicationName("tu");
142 144 reqVO.setCode(1);
143 145 reqVO.setMessage("ma");
144   - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 11, 1),buildTime(2020, 11, 30)}));
  146 + reqVO.setCreateTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30));
145 147  
146 148 // 调用
147 149 List<ErrorCodeDO> list = errorCodeService.getErrorCodeList(reqVO);
... ... @@ -155,7 +157,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
155 157 // 准备参数
156 158 Integer code = randomInteger();
157 159 // mock 数据
158   - errorCodeMapper.insert(randomInfErrorCodeDO(o -> o.setCode(code)));
  160 + errorCodeMapper.insert(randomErrorCodeDO(o -> o.setCode(code)));
159 161  
160 162 // 调用,校验异常
161 163 assertServiceException(() -> errorCodeService.validateCodeDuplicate(code, null),
... ... @@ -168,7 +170,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
168 170 Long id = randomLongId();
169 171 Integer code = randomInteger();
170 172 // mock 数据
171   - errorCodeMapper.insert(randomInfErrorCodeDO(o -> o.setCode(code)));
  173 + errorCodeMapper.insert(randomErrorCodeDO(o -> o.setCode(code)));
172 174  
173 175 // 调用,校验异常
174 176 assertServiceException(() -> errorCodeService.validateCodeDuplicate(code, id),
... ... @@ -204,7 +206,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
204 206 @Test
205 207 public void testAutoGenerateErrorCodes_021() {
206 208 // mock 数据
207   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.MANUAL_OPERATION.getType()));
  209 + ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.MANUAL_OPERATION.getType()));
208 210 errorCodeMapper.insert(dbErrorCode);
209 211 // 准备参数
210 212 ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class,
... ... @@ -224,7 +226,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
224 226 @Test
225 227 public void testAutoGenerateErrorCodes_022() {
226 228 // mock 数据
227   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()));
  229 + ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()));
228 230 errorCodeMapper.insert(dbErrorCode);
229 231 // 准备参数
230 232 ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class,
... ... @@ -244,7 +246,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
244 246 @Test
245 247 public void testAutoGenerateErrorCodes_023() {
246 248 // mock 数据
247   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()));
  249 + ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()));
248 250 errorCodeMapper.insert(dbErrorCode);
249 251 // 准备参数
250 252 ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class,
... ... @@ -265,7 +267,7 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
265 267 @Test
266 268 public void testAutoGenerateErrorCodes_024() {
267 269 // mock 数据
268   - ErrorCodeDO dbErrorCode = randomInfErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()));
  270 + ErrorCodeDO dbErrorCode = randomErrorCodeDO(o -> o.setType(ErrorCodeTypeEnum.AUTO_GENERATION.getType()));
269 271 errorCodeMapper.insert(dbErrorCode);
270 272 // 准备参数
271 273 ErrorCodeAutoGenerateReqDTO generateReqDTO = randomPojo(ErrorCodeAutoGenerateReqDTO.class,
... ... @@ -279,10 +281,44 @@ public class ErrorCodeServiceTest extends BaseDbUnitTest {
279 281 assertPojoEquals(generateReqDTO, errorCode);
280 282 }
281 283  
  284 + @Test
  285 + public void testGetErrorCode() {
  286 + // 准备参数
  287 + ErrorCodeDO errorCodeDO = randomErrorCodeDO();
  288 + errorCodeMapper.insert(errorCodeDO);
  289 + // mock 方法
  290 + Long id = errorCodeDO.getId();
  291 +
  292 + // 调用
  293 + ErrorCodeDO dbErrorCode = errorCodeService.getErrorCode(id);
  294 + // 断言
  295 + assertPojoEquals(errorCodeDO, dbErrorCode);
  296 + }
  297 +
  298 + @Test
  299 + public void testGetErrorCodeList() {
  300 + // 准备参数
  301 + ErrorCodeDO errorCodeDO01 = randomErrorCodeDO(
  302 + o -> o.setApplicationName("yunai_server").setUpdateTime(buildTime(2022, 1, 10)));
  303 + errorCodeMapper.insert(errorCodeDO01);
  304 + ErrorCodeDO errorCodeDO02 = randomErrorCodeDO(
  305 + o -> o.setApplicationName("yunai_server").setUpdateTime(buildTime(2022, 1, 12)));
  306 + errorCodeMapper.insert(errorCodeDO02);
  307 + // mock 方法
  308 + String applicationName = "yunai_server";
  309 + LocalDateTime minUpdateTime = buildTime(2022, 1, 11);
  310 +
  311 + // 调用
  312 + List<ErrorCodeRespDTO> errorCodeList = errorCodeService.getErrorCodeList(applicationName, minUpdateTime);
  313 + // 断言
  314 + assertEquals(1, errorCodeList.size());
  315 + assertPojoEquals(errorCodeDO02, errorCodeList.get(0));
  316 + }
  317 +
282 318 // ========== 随机对象 ==========
283 319  
284 320 @SafeVarargs
285   - private static ErrorCodeDO randomInfErrorCodeDO(Consumer<ErrorCodeDO>... consumers) {
  321 + private static ErrorCodeDO randomErrorCodeDO(Consumer<ErrorCodeDO>... consumers) {
286 322 Consumer<ErrorCodeDO> consumer = (o) -> {
287 323 o.setType(randomEle(ErrorCodeTypeEnum.values()).getType()); // 保证 key 的范围
288 324 };
... ...