Commit 81e7e046801efdeb0de8d44c56fd1a23a4b0e60f

Authored by YunaiV
1 parent f6761537

完成部分 SysUserServiceImplTest 单元测试

@@ -46,7 +46,12 @@ @@ -46,7 +46,12 @@
46 <easyexcel.verion>2.2.7</easyexcel.verion> 46 <easyexcel.verion>2.2.7</easyexcel.verion>
47 <velocity.version>2.2</velocity.version> 47 <velocity.version>2.2</velocity.version>
48 <screw.version>1.0.5</screw.version> 48 <screw.version>1.0.5</screw.version>
  49 + <podam.version>7.2.6.RELEASE</podam.version>
  50 + <jedis-mock.version>0.1.16</jedis-mock.version>
49 <!-- 三方云服务相关 --> 51 <!-- 三方云服务相关 -->
  52 + <aliyun-java-sdk-core.version>4.5.18</aliyun-java-sdk-core.version>
  53 + <aliyun-java-sdk-dysmsapi.version>2.1.0</aliyun-java-sdk-dysmsapi.version>
  54 + <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
50 </properties> 55 </properties>
51 56
52 <!-- 依赖声明 --> 57 <!-- 依赖声明 -->
@@ -213,14 +218,14 @@ @@ -213,14 +218,14 @@
213 <dependency> 218 <dependency>
214 <groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 --> 219 <groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 -->
215 <artifactId>jedis-mock</artifactId> 220 <artifactId>jedis-mock</artifactId>
216 - <version>0.1.16</version> 221 + <version>${jedis-mock.version}</version>
217 <scope>test</scope> 222 <scope>test</scope>
218 </dependency> 223 </dependency>
219 224
220 <dependency> 225 <dependency>
221 <groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 --> 226 <groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 -->
222 <artifactId>podam</artifactId> 227 <artifactId>podam</artifactId>
223 - <version>7.2.6.RELEASE</version> 228 + <version>${podam.version}</version>
224 <scope>test</scope> 229 <scope>test</scope>
225 </dependency> 230 </dependency>
226 231
@@ -278,18 +283,18 @@ @@ -278,18 +283,18 @@
278 <dependency> 283 <dependency>
279 <groupId>com.yunpian.sdk</groupId> 284 <groupId>com.yunpian.sdk</groupId>
280 <artifactId>yunpian-java-sdk</artifactId> 285 <artifactId>yunpian-java-sdk</artifactId>
281 - <version>1.2.7</version> 286 + <version>${yunpian-java-sdk.version}</version>
282 </dependency> 287 </dependency>
283 288
284 <dependency> 289 <dependency>
285 <groupId>com.aliyun</groupId> 290 <groupId>com.aliyun</groupId>
286 <artifactId>aliyun-java-sdk-core</artifactId> 291 <artifactId>aliyun-java-sdk-core</artifactId>
287 - <version>4.5.18</version> 292 + <version>${aliyun-java-sdk-core.version}</version>
288 </dependency> 293 </dependency>
289 <dependency> 294 <dependency>
290 <groupId>com.aliyun</groupId> 295 <groupId>com.aliyun</groupId>
291 <artifactId>aliyun-java-sdk-dysmsapi</artifactId> 296 <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
292 - <version>2.1.0</version> 297 + <version>${aliyun-java-sdk-dysmsapi.version}</version>
293 </dependency> 298 </dependency>
294 <!-- SMS SDK end --> 299 <!-- SMS SDK end -->
295 300
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserController.java
@@ -149,9 +149,9 @@ public class SysUserController { @@ -149,9 +149,9 @@ public class SysUserController {
149 // 手动创建导出 demo 149 // 手动创建导出 demo
150 List<SysUserImportExcelVO> list = Arrays.asList( 150 List<SysUserImportExcelVO> list = Arrays.asList(
151 SysUserImportExcelVO.builder().username("yudao").deptId(1L).email("yudao@iocoder.cn").mobile("15601691300") 151 SysUserImportExcelVO.builder().username("yudao").deptId(1L).email("yudao@iocoder.cn").mobile("15601691300")
152 - .nickname("芋道").status(CommonStatusEnum.ENABLE.getStatus()).sex(SysSexEnum.MALE.getSEX()).build(), 152 + .nickname("芋道").status(CommonStatusEnum.ENABLE.getStatus()).sex(SysSexEnum.MALE.getSex()).build(),
153 SysUserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300") 153 SysUserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300")
154 - .nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SysSexEnum.FEMALE.getSEX()).build() 154 + .nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SysSexEnum.FEMALE.getSex()).build()
155 ); 155 );
156 156
157 // 输出 157 // 输出
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java
@@ -3,9 +3,9 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.profile; @@ -3,9 +3,9 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.profile;
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
  6 +import org.hibernate.validator.constraints.Length;
6 7
7 import javax.validation.constraints.Email; 8 import javax.validation.constraints.Email;
8 -import javax.validation.constraints.Pattern;  
9 import javax.validation.constraints.Size; 9 import javax.validation.constraints.Size;
10 10
11 @ApiModel("用户个人信息更新 Request VO") 11 @ApiModel("用户个人信息更新 Request VO")
@@ -22,7 +22,7 @@ public class SysUserProfileUpdateReqVO { @@ -22,7 +22,7 @@ public class SysUserProfileUpdateReqVO {
22 private String email; 22 private String email;
23 23
24 @ApiModelProperty(value = "手机号码", example = "15601691300") 24 @ApiModelProperty(value = "手机号码", example = "15601691300")
25 - @Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误") 25 + @Length(min = 11, max = 11, message = "手机号长度必须 11 位")
26 private String mobile; 26 private String mobile;
27 27
28 @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类") 28 @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类")
src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserBaseVO.java
@@ -2,10 +2,10 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.user; @@ -2,10 +2,10 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.user;
2 2
3 import io.swagger.annotations.ApiModelProperty; 3 import io.swagger.annotations.ApiModelProperty;
4 import lombok.Data; 4 import lombok.Data;
  5 +import org.hibernate.validator.constraints.Length;
5 6
6 import javax.validation.constraints.Email; 7 import javax.validation.constraints.Email;
7 import javax.validation.constraints.NotBlank; 8 import javax.validation.constraints.NotBlank;
8 -import javax.validation.constraints.Pattern;  
9 import javax.validation.constraints.Size; 9 import javax.validation.constraints.Size;
10 import java.util.Set; 10 import java.util.Set;
11 11
@@ -40,7 +40,7 @@ public class SysUserBaseVO { @@ -40,7 +40,7 @@ public class SysUserBaseVO {
40 private String email; 40 private String email;
41 41
42 @ApiModelProperty(value = "手机号码", example = "15601691300") 42 @ApiModelProperty(value = "手机号码", example = "15601691300")
43 - @Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误") 43 + @Length(min = 11, max = 11, message = "手机号长度必须 11 位")
44 private String mobile; 44 private String mobile;
45 45
46 @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类") 46 @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类")
src/main/java/cn/iocoder/dashboard/modules/system/enums/common/SysSexEnum.java
@@ -3,6 +3,11 @@ package cn.iocoder.dashboard.modules.system.enums.common; @@ -3,6 +3,11 @@ package cn.iocoder.dashboard.modules.system.enums.common;
3 import lombok.AllArgsConstructor; 3 import lombok.AllArgsConstructor;
4 import lombok.Getter; 4 import lombok.Getter;
5 5
  6 +/**
  7 + * 性别的枚举值
  8 + *
  9 + * @author 芋道源码
  10 + */
6 @Getter 11 @Getter
7 @AllArgsConstructor 12 @AllArgsConstructor
8 public enum SysSexEnum { 13 public enum SysSexEnum {
@@ -10,6 +15,9 @@ public enum SysSexEnum { @@ -10,6 +15,9 @@ public enum SysSexEnum {
10 MALE(1), // 男 15 MALE(1), // 男
11 FEMALE(2); // 女 16 FEMALE(2); // 女
12 17
13 - private final Integer SEX; 18 + /**
  19 + * 性别
  20 + */
  21 + private final Integer sex;
14 22
15 } 23 }
src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImpl.java
@@ -6,17 +6,11 @@ import cn.hutool.core.util.IdUtil; @@ -6,17 +6,11 @@ import cn.hutool.core.util.IdUtil;
6 import cn.hutool.core.util.StrUtil; 6 import cn.hutool.core.util.StrUtil;
7 import cn.iocoder.dashboard.common.enums.CommonStatusEnum; 7 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
8 import cn.iocoder.dashboard.common.exception.ServiceException; 8 import cn.iocoder.dashboard.common.exception.ServiceException;
9 -import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;  
10 import cn.iocoder.dashboard.common.pojo.PageResult; 9 import cn.iocoder.dashboard.common.pojo.PageResult;
11 import cn.iocoder.dashboard.modules.infra.service.file.InfFileService; 10 import cn.iocoder.dashboard.modules.infra.service.file.InfFileService;
12 import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; 11 import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
13 import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; 12 import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
14 -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO;  
15 -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserExportReqVO;  
16 -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO;  
17 -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO;  
18 -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserPageReqVO;  
19 -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO; 13 +import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*;
20 import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert; 14 import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert;
21 import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; 15 import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO;
22 import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; 16 import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO;
@@ -33,14 +27,9 @@ import org.springframework.transaction.annotation.Transactional; @@ -33,14 +27,9 @@ import org.springframework.transaction.annotation.Transactional;
33 27
34 import javax.annotation.Resource; 28 import javax.annotation.Resource;
35 import java.io.InputStream; 29 import java.io.InputStream;
36 -import java.util.ArrayList;  
37 -import java.util.Collection;  
38 -import java.util.Collections;  
39 -import java.util.LinkedHashMap;  
40 -import java.util.List;  
41 -import java.util.Map;  
42 -import java.util.Set; 30 +import java.util.*;
43 31
  32 +import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
44 import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; 33 import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
45 34
46 35
@@ -142,8 +131,6 @@ public class SysUserServiceImpl implements SysUserService { @@ -142,8 +131,6 @@ public class SysUserServiceImpl implements SysUserService {
142 updateObj.setId(id); 131 updateObj.setId(id);
143 updateObj.setStatus(status); 132 updateObj.setStatus(status);
144 userMapper.updateById(updateObj); 133 userMapper.updateById(updateObj);
145 - // 删除用户关联数据  
146 - permissionService.processUserDeleted(id);  
147 } 134 }
148 135
149 @Override 136 @Override
@@ -152,6 +139,8 @@ public class SysUserServiceImpl implements SysUserService { @@ -152,6 +139,8 @@ public class SysUserServiceImpl implements SysUserService {
152 this.checkUserExists(id); 139 this.checkUserExists(id);
153 // 删除用户 140 // 删除用户
154 userMapper.deleteById(id); 141 userMapper.deleteById(id);
  142 + // 删除用户关联数据
  143 + permissionService.processUserDeleted(id);
155 } 144 }
156 145
157 @Override 146 @Override
@@ -227,7 +216,7 @@ public class SysUserServiceImpl implements SysUserService { @@ -227,7 +216,7 @@ public class SysUserServiceImpl implements SysUserService {
227 } 216 }
228 SysUserDO user = userMapper.selectById(id); 217 SysUserDO user = userMapper.selectById(id);
229 if (user == null) { 218 if (user == null) {
230 - throw ServiceExceptionUtil.exception(USER_NOT_EXISTS); 219 + throw exception(USER_NOT_EXISTS);
231 } 220 }
232 } 221 }
233 222
@@ -241,10 +230,10 @@ public class SysUserServiceImpl implements SysUserService { @@ -241,10 +230,10 @@ public class SysUserServiceImpl implements SysUserService {
241 } 230 }
242 // 如果 id 为空,说明不用比较是否为相同 id 的用户 231 // 如果 id 为空,说明不用比较是否为相同 id 的用户
243 if (id == null) { 232 if (id == null) {
244 - throw ServiceExceptionUtil.exception(USER_USERNAME_EXISTS); 233 + throw exception(USER_USERNAME_EXISTS);
245 } 234 }
246 if (!user.getId().equals(id)) { 235 if (!user.getId().equals(id)) {
247 - throw ServiceExceptionUtil.exception(USER_USERNAME_EXISTS); 236 + throw exception(USER_USERNAME_EXISTS);
248 } 237 }
249 } 238 }
250 239
@@ -258,10 +247,10 @@ public class SysUserServiceImpl implements SysUserService { @@ -258,10 +247,10 @@ public class SysUserServiceImpl implements SysUserService {
258 } 247 }
259 // 如果 id 为空,说明不用比较是否为相同 id 的用户 248 // 如果 id 为空,说明不用比较是否为相同 id 的用户
260 if (id == null) { 249 if (id == null) {
261 - throw ServiceExceptionUtil.exception(USER_EMAIL_EXISTS); 250 + throw exception(USER_EMAIL_EXISTS);
262 } 251 }
263 if (!user.getId().equals(id)) { 252 if (!user.getId().equals(id)) {
264 - throw ServiceExceptionUtil.exception(USER_EMAIL_EXISTS); 253 + throw exception(USER_EMAIL_EXISTS);
265 } 254 }
266 } 255 }
267 256
@@ -275,10 +264,10 @@ public class SysUserServiceImpl implements SysUserService { @@ -275,10 +264,10 @@ public class SysUserServiceImpl implements SysUserService {
275 } 264 }
276 // 如果 id 为空,说明不用比较是否为相同 id 的用户 265 // 如果 id 为空,说明不用比较是否为相同 id 的用户
277 if (id == null) { 266 if (id == null) {
278 - throw ServiceExceptionUtil.exception(USER_MOBILE_EXISTS); 267 + throw exception(USER_MOBILE_EXISTS);
279 } 268 }
280 if (!user.getId().equals(id)) { 269 if (!user.getId().equals(id)) {
281 - throw ServiceExceptionUtil.exception(USER_MOBILE_EXISTS); 270 + throw exception(USER_MOBILE_EXISTS);
282 } 271 }
283 } 272 }
284 273
@@ -288,10 +277,10 @@ public class SysUserServiceImpl implements SysUserService { @@ -288,10 +277,10 @@ public class SysUserServiceImpl implements SysUserService {
288 } 277 }
289 SysDeptDO dept = deptService.getDept(deptId); 278 SysDeptDO dept = deptService.getDept(deptId);
290 if (dept == null) { 279 if (dept == null) {
291 - throw ServiceExceptionUtil.exception(DEPT_NOT_FOUND); 280 + throw exception(DEPT_NOT_FOUND);
292 } 281 }
293 if (!CommonStatusEnum.ENABLE.getStatus().equals(dept.getStatus())) { 282 if (!CommonStatusEnum.ENABLE.getStatus().equals(dept.getStatus())) {
294 - throw ServiceExceptionUtil.exception(DEPT_NOT_ENABLE); 283 + throw exception(DEPT_NOT_ENABLE);
295 } 284 }
296 } 285 }
297 286
@@ -301,16 +290,16 @@ public class SysUserServiceImpl implements SysUserService { @@ -301,16 +290,16 @@ public class SysUserServiceImpl implements SysUserService {
301 } 290 }
302 List<SysPostDO> posts = postService.getPosts(postIds, null); 291 List<SysPostDO> posts = postService.getPosts(postIds, null);
303 if (CollUtil.isEmpty(posts)) { 292 if (CollUtil.isEmpty(posts)) {
304 - throw ServiceExceptionUtil.exception(POST_NOT_FOUND); 293 + throw exception(POST_NOT_FOUND);
305 } 294 }
306 Map<Long, SysPostDO> postMap = CollectionUtils.convertMap(posts, SysPostDO::getId); 295 Map<Long, SysPostDO> postMap = CollectionUtils.convertMap(posts, SysPostDO::getId);
307 postIds.forEach(postId -> { 296 postIds.forEach(postId -> {
308 SysPostDO post = postMap.get(postId); 297 SysPostDO post = postMap.get(postId);
309 if (post == null) { 298 if (post == null) {
310 - throw ServiceExceptionUtil.exception(POST_NOT_FOUND); 299 + throw exception(POST_NOT_FOUND);
311 } 300 }
312 if (!CommonStatusEnum.ENABLE.getStatus().equals(post.getStatus())) { 301 if (!CommonStatusEnum.ENABLE.getStatus().equals(post.getStatus())) {
313 - throw ServiceExceptionUtil.exception(POST_NOT_ENABLE, post.getName()); 302 + throw exception(POST_NOT_ENABLE, post.getName());
314 } 303 }
315 }); 304 });
316 } 305 }
@@ -324,10 +313,10 @@ public class SysUserServiceImpl implements SysUserService { @@ -324,10 +313,10 @@ public class SysUserServiceImpl implements SysUserService {
324 private void checkOldPassword(Long id, String oldPassword) { 313 private void checkOldPassword(Long id, String oldPassword) {
325 SysUserDO user = userMapper.selectById(id); 314 SysUserDO user = userMapper.selectById(id);
326 if (user == null) { 315 if (user == null) {
327 - throw ServiceExceptionUtil.exception(USER_NOT_EXISTS); 316 + throw exception(USER_NOT_EXISTS);
328 } 317 }
329 if (!passwordEncoder.matches(oldPassword, user.getPassword())) { 318 if (!passwordEncoder.matches(oldPassword, user.getPassword())) {
330 - throw ServiceExceptionUtil.exception(USER_PASSWORD_FAILED); 319 + throw exception(USER_PASSWORD_FAILED);
331 } 320 }
332 } 321 }
333 322
@@ -335,7 +324,7 @@ public class SysUserServiceImpl implements SysUserService { @@ -335,7 +324,7 @@ public class SysUserServiceImpl implements SysUserService {
335 @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 324 @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
336 public SysUserImportRespVO importUsers(List<SysUserImportExcelVO> importUsers, boolean isUpdateSupport) { 325 public SysUserImportRespVO importUsers(List<SysUserImportExcelVO> importUsers, boolean isUpdateSupport) {
337 if (CollUtil.isEmpty(importUsers)) { 326 if (CollUtil.isEmpty(importUsers)) {
338 - throw ServiceExceptionUtil.exception(USER_IMPORT_LIST_IS_EMPTY); 327 + throw exception(USER_IMPORT_LIST_IS_EMPTY);
339 } 328 }
340 SysUserImportRespVO respVO = SysUserImportRespVO.builder().createUsernames(new ArrayList<>()) 329 SysUserImportRespVO respVO = SysUserImportRespVO.builder().createUsernames(new ArrayList<>())
341 .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build(); 330 .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserSessionServiceImplTest.java
1 package cn.iocoder.dashboard.modules.system.service.auth; 1 package cn.iocoder.dashboard.modules.system.service.auth;
2 2
3 import static cn.hutool.core.util.RandomUtil.randomEle; 3 import static cn.hutool.core.util.RandomUtil.randomEle;
4 -import static cn.iocoder.dashboard.modules.system.dal.redis.SysRedisKeyConstants.LOGIN_USER;  
5 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals; 4 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
6 import static cn.iocoder.dashboard.util.RandomUtils.randomDate; 5 import static cn.iocoder.dashboard.util.RandomUtils.randomDate;
7 import static cn.iocoder.dashboard.util.RandomUtils.randomLongId; 6 import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
@@ -25,7 +24,6 @@ import javax.annotation.Resource; @@ -25,7 +24,6 @@ import javax.annotation.Resource;
25 import org.junit.jupiter.api.Test; 24 import org.junit.jupiter.api.Test;
26 import org.springframework.boot.test.mock.mockito.MockBean; 25 import org.springframework.boot.test.mock.mockito.MockBean;
27 import org.springframework.context.annotation.Import; 26 import org.springframework.context.annotation.Import;
28 -import org.springframework.data.redis.core.StringRedisTemplate;  
29 27
30 import cn.hutool.core.date.DateUtil; 28 import cn.hutool.core.date.DateUtil;
31 import cn.iocoder.dashboard.BaseDbAndRedisUnitTest; 29 import cn.iocoder.dashboard.BaseDbAndRedisUnitTest;
@@ -33,10 +31,6 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum; @@ -33,10 +31,6 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
33 import cn.iocoder.dashboard.common.pojo.PageResult; 31 import cn.iocoder.dashboard.common.pojo.PageResult;
34 import cn.iocoder.dashboard.framework.security.config.SecurityProperties; 32 import cn.iocoder.dashboard.framework.security.config.SecurityProperties;
35 import cn.iocoder.dashboard.framework.security.core.LoginUser; 33 import cn.iocoder.dashboard.framework.security.core.LoginUser;
36 -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO;  
37 -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO;  
38 -import cn.iocoder.dashboard.modules.infra.enums.config.InfConfigTypeEnum;  
39 -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum;  
40 import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; 34 import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
41 import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; 35 import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO;
42 import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; 36 import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
@@ -50,7 +44,6 @@ import cn.iocoder.dashboard.modules.system.service.logger.impl.SysLoginLogServic @@ -50,7 +44,6 @@ import cn.iocoder.dashboard.modules.system.service.logger.impl.SysLoginLogServic
50 import cn.iocoder.dashboard.modules.system.service.user.SysUserServiceImpl; 44 import cn.iocoder.dashboard.modules.system.service.user.SysUserServiceImpl;
51 import cn.iocoder.dashboard.util.AssertUtils; 45 import cn.iocoder.dashboard.util.AssertUtils;
52 import cn.iocoder.dashboard.util.RandomUtils; 46 import cn.iocoder.dashboard.util.RandomUtils;
53 -import cn.iocoder.dashboard.util.json.JsonUtils;  
54 import cn.iocoder.dashboard.util.object.ObjectUtils; 47 import cn.iocoder.dashboard.util.object.ObjectUtils;
55 48
56 /** 49 /**
@@ -167,12 +160,12 @@ public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest { @@ -167,12 +160,12 @@ public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest {
167 String userIp = randomString(); 160 String userIp = randomString();
168 SysUserDO dbUser1 = randomPojo(SysUserDO.class, o -> { 161 SysUserDO dbUser1 = randomPojo(SysUserDO.class, o -> {
169 o.setUsername("testUsername1"); 162 o.setUsername("testUsername1");
170 - o.setSex(randomEle(SysSexEnum.values()).getSEX()); 163 + o.setSex(randomEle(SysSexEnum.values()).getSex());
171 o.setStatus(CommonStatusEnum.ENABLE.getStatus()); 164 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
172 }); 165 });
173 SysUserDO dbUser2 = randomPojo(SysUserDO.class, o -> { 166 SysUserDO dbUser2 = randomPojo(SysUserDO.class, o -> {
174 o.setUsername("testUsername2"); 167 o.setUsername("testUsername2");
175 - o.setSex(randomEle(SysSexEnum.values()).getSEX()); 168 + o.setSex(randomEle(SysSexEnum.values()).getSex());
176 o.setStatus(CommonStatusEnum.ENABLE.getStatus()); 169 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
177 }); 170 });
178 SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> { 171 SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> {
src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogServiceImplTest.java
@@ -68,7 +68,7 @@ public class SysOperateLogServiceImplTest extends BaseDbUnitTest { @@ -68,7 +68,7 @@ public class SysOperateLogServiceImplTest extends BaseDbUnitTest {
68 // 先构造用户 68 // 先构造用户
69 SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { 69 SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> {
70 o.setNickname("wangkai"); 70 o.setNickname("wangkai");
71 - o.setSex(SysSexEnum.MALE.getSEX()); 71 + o.setSex(SysSexEnum.MALE.getSex());
72 o.setStatus(CommonStatusEnum.ENABLE.getStatus()); 72 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
73 }); 73 });
74 when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user)); 74 when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
@@ -119,7 +119,7 @@ public class SysOperateLogServiceImplTest extends BaseDbUnitTest { @@ -119,7 +119,7 @@ public class SysOperateLogServiceImplTest extends BaseDbUnitTest {
119 // 先构造用户 119 // 先构造用户
120 SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { 120 SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> {
121 o.setNickname("wangkai"); 121 o.setNickname("wangkai");
122 - o.setSex(SysSexEnum.MALE.getSEX()); 122 + o.setSex(SysSexEnum.MALE.getSex());
123 o.setStatus(CommonStatusEnum.ENABLE.getStatus()); 123 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
124 }); 124 });
125 when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user)); 125 when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelServiceTest.java
@@ -56,7 +56,7 @@ public class SysSmsChannelServiceTest extends BaseDbUnitTest { @@ -56,7 +56,7 @@ public class SysSmsChannelServiceTest extends BaseDbUnitTest {
56 56
57 @Test 57 @Test
58 public void testInitLocalCache_success() { 58 public void testInitLocalCache_success() {
59 - // mock 数据s 59 + // mock 数据
60 SysSmsChannelDO smsChannelDO01 = randomSmsChannelDO(); 60 SysSmsChannelDO smsChannelDO01 = randomSmsChannelDO();
61 smsChannelMapper.insert(smsChannelDO01); 61 smsChannelMapper.insert(smsChannelDO01);
62 SysSmsChannelDO smsChannelDO02 = randomSmsChannelDO(); 62 SysSmsChannelDO smsChannelDO02 = randomSmsChannelDO();
src/test/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImplTest.java
1 package cn.iocoder.dashboard.modules.system.service.user; 1 package cn.iocoder.dashboard.modules.system.service.user;
2 2
3 import cn.hutool.core.util.RandomUtil; 3 import cn.hutool.core.util.RandomUtil;
4 -import cn.iocoder.dashboard.BaseSpringBootUnitTest; 4 +import cn.iocoder.dashboard.BaseDbUnitTest;
5 import cn.iocoder.dashboard.common.enums.CommonStatusEnum; 5 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
  6 +import cn.iocoder.dashboard.modules.infra.service.file.InfFileService;
  7 +import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
  8 +import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
6 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO; 9 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO;
7 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO; 10 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO;
8 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO; 11 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO;
9 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO; 12 import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO;
10 import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; 13 import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO;
11 -import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; 14 +import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO;
  15 +import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
  16 +import cn.iocoder.dashboard.modules.system.dal.mysql.user.SysUserMapper;
  17 +import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum;
12 import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; 18 import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService;
13 -import cn.iocoder.dashboard.util.RandomUtils; 19 +import cn.iocoder.dashboard.modules.system.service.dept.SysPostService;
  20 +import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService;
  21 +import cn.iocoder.dashboard.util.collection.ArrayUtils;
  22 +import cn.iocoder.dashboard.util.collection.CollectionUtils;
14 import org.junit.jupiter.api.Test; 23 import org.junit.jupiter.api.Test;
15 -import org.springframework.beans.factory.annotation.Autowired; 24 +import org.mockito.stubbing.Answer;
  25 +import org.springframework.boot.test.mock.mockito.MockBean;
16 import org.springframework.context.annotation.Import; 26 import org.springframework.context.annotation.Import;
17 import org.springframework.security.crypto.password.PasswordEncoder; 27 import org.springframework.security.crypto.password.PasswordEncoder;
18 28
19 import javax.annotation.Resource; 29 import javax.annotation.Resource;
  30 +import java.io.ByteArrayInputStream;
20 import java.util.ArrayList; 31 import java.util.ArrayList;
21 -import java.util.Collections;  
22 import java.util.List; 32 import java.util.List;
  33 +import java.util.function.Consumer;
23 34
24 -import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;  
25 -import static cn.iocoder.dashboard.util.RandomUtils.randomString;  
26 -import static org.junit.jupiter.api.Assertions.*; 35 +import static cn.hutool.core.util.RandomUtil.randomBytes;
  36 +import static cn.hutool.core.util.RandomUtil.randomEle;
  37 +import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
  38 +import static cn.iocoder.dashboard.util.RandomUtils.*;
  39 +import static org.junit.jupiter.api.Assertions.assertEquals;
  40 +import static org.junit.jupiter.api.Assertions.assertNull;
  41 +import static org.mockito.ArgumentMatchers.*;
  42 +import static org.mockito.Mockito.*;
27 43
28 /** 44 /**
29 - * @Author zxl  
30 - * @Date 2021/3/6 14:28  
31 - * @Desc 45 + * {@link SysUserService} 的单元测试类
  46 + *
  47 + * @author zxl
32 */ 48 */
33 -@Import(PasswordEncoder.class)  
34 -public class SysUserServiceImplTest extends BaseSpringBootUnitTest { 49 +@Import(SysUserServiceImpl.class)
  50 +public class SysUserServiceImplTest extends BaseDbUnitTest {
  51 +
  52 + @Resource
  53 + private SysUserServiceImpl userService;
35 54
36 - @Autowired  
37 - private SysUserService userService;  
38 - @Autowired  
39 - private PasswordEncoder passwordEncoder;  
40 - @Autowired  
41 - private SysDeptService deptService;  
42 @Resource 55 @Resource
43 - private SysDeptMapper deptMapper; 56 + private SysUserMapper userMapper;
44 57
  58 + @MockBean
  59 + private SysDeptService deptService;
  60 + @MockBean
  61 + private SysPostService postService;
  62 + @MockBean
  63 + private SysPermissionService permissionService;
  64 + @MockBean
  65 + private PasswordEncoder passwordEncoder;
  66 + @MockBean
  67 + private InfFileService fileService;
45 68
46 @Test 69 @Test
47 - public void test_creatUser(){ 70 + public void testCreatUser_success() {
48 // 准备参数 71 // 准备参数
49 - SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{  
50 - o.setDeptId(null);  
51 - o.setPostIds(Collections.emptySet());  
52 - o.setSex(1);  
53 - o.setPassword(randomString()); 72 + SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class, o -> {
  73 + o.setSex(RandomUtil.randomEle(SysSexEnum.values()).getSex());
  74 + o.setMobile(randomString());
54 }); 75 });
55 - // 调用方法  
56 - Long userId = userService.createUser(reqVO);  
57 - // 校验数据是否存在  
58 - assertNotNull(userService.getUser(userId)); 76 + // mock deptService 的方法
  77 + SysDeptDO dept = randomPojo(SysDeptDO.class, o -> {
  78 + o.setId(reqVO.getDeptId());
  79 + o.setStatus(CommonStatusEnum.ENABLE.getStatus());
  80 + });
  81 + when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
  82 + // mock postService 的方法
  83 + List<SysPostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
  84 + randomPojo(SysPostDO.class, o -> {
  85 + o.setId(postId);
  86 + o.setStatus(CommonStatusEnum.ENABLE.getStatus());
  87 + }));
  88 + when(postService.getPosts(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
  89 + // mock passwordEncoder 的方法
  90 + when(passwordEncoder.encode(eq(reqVO.getPassword()))).thenReturn("yudaoyuanma");
  91 +
  92 + // 调用
  93 + Long userId = userService.createUser(reqVO);
  94 + // 断言
  95 + SysUserDO user = userMapper.selectById(userId);
  96 + assertPojoEquals(reqVO, user, "password");
  97 + assertEquals("yudaoyuanma", user.getPassword());
  98 + assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus());
59 } 99 }
60 100
61 @Test 101 @Test
62 - public void test_updateUser(){ 102 + public void testUpdateUser_success() {
  103 + // mock 数据
  104 + SysUserDO dbUser = randomSysUserDO();
  105 + userMapper.insert(dbUser);
63 // 准备参数 106 // 准备参数
64 - SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{  
65 - o.setDeptId(null);  
66 - o.setPostIds(Collections.emptySet());  
67 - o.setSex(1);  
68 - o.setPassword(randomString()); 107 + SysUserUpdateReqVO reqVO = randomPojo(SysUserUpdateReqVO.class, o -> {
  108 + o.setId(dbUser.getId());
  109 + o.setSex(RandomUtil.randomEle(SysSexEnum.values()).getSex());
  110 + o.setMobile(randomString());
69 }); 111 });
70 - // 先插入一条  
71 - Long userId = userService.createUser(reqVO);  
72 - // 准备更新参数:更新手机号  
73 - SysUserUpdateReqVO updateVo = new SysUserUpdateReqVO();  
74 - updateVo.setId(userId);  
75 - updateVo.setMobile(RandomUtil.randomNumbers(11));  
76 - // 调用方法、  
77 - userService.updateUser(updateVo);  
78 - // 校验结果  
79 - assertEquals(userService.getUser(userId).getMobile(),updateVo.getMobile()); 112 + // mock deptService 的方法
  113 + SysDeptDO dept = randomPojo(SysDeptDO.class, o -> {
  114 + o.setId(reqVO.getDeptId());
  115 + o.setStatus(CommonStatusEnum.ENABLE.getStatus());
  116 + });
  117 + when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
  118 + // mock postService 的方法
  119 + List<SysPostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
  120 + randomPojo(SysPostDO.class, o -> {
  121 + o.setId(postId);
  122 + o.setStatus(CommonStatusEnum.ENABLE.getStatus());
  123 + }));
  124 + when(postService.getPosts(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
80 125
  126 + // 调用
  127 + userService.updateUser(reqVO);
  128 + // 断言
  129 + SysUserDO user = userMapper.selectById(reqVO.getId());
  130 + assertPojoEquals(reqVO, user);
81 } 131 }
82 132
83 @Test 133 @Test
84 - public void test_deleteUser(){ 134 + public void testUpdateUserProfile_success() {
  135 + // mock 数据
  136 + SysUserDO dbUser = randomSysUserDO();
  137 + userMapper.insert(dbUser);
85 // 准备参数 138 // 准备参数
86 - SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{  
87 - o.setDeptId(null);  
88 - o.setPostIds(Collections.emptySet());  
89 - o.setSex(1);  
90 - o.setPassword(randomString()); 139 + Long userId = dbUser.getId();
  140 + SysUserProfileUpdateReqVO reqVO = randomPojo(SysUserProfileUpdateReqVO.class, o -> {
  141 + o.setMobile(randomString());
  142 + o.setSex(RandomUtil.randomEle(SysSexEnum.values()).getSex());
91 }); 143 });
92 - // 先插入一条  
93 - Long userId = userService.createUser(reqVO);  
94 - // 调用数据  
95 - userService.deleteUser(userId);  
96 - // 校验结果  
97 - assertNull(userService.getUser(userId)); 144 +
  145 + // 调用
  146 + userService.updateUserProfile(userId, reqVO);
  147 + // 断言
  148 + SysUserDO user = userMapper.selectById(userId);
  149 + assertPojoEquals(reqVO, user);
98 } 150 }
99 151
100 @Test 152 @Test
101 - public void test_updateUserPassword(){ 153 + public void testUpdateUserPassword_success() {
  154 + // mock 数据
  155 + SysUserDO dbUser = randomSysUserDO(o -> o.setPassword("encode:yudao"));
  156 + userMapper.insert(dbUser);
102 // 准备参数 157 // 准备参数
103 - SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{  
104 - o.setDeptId(null);  
105 - o.setPostIds(Collections.emptySet());  
106 - o.setSex(1);  
107 - o.setPassword("123"); 158 + Long userId = dbUser.getId();
  159 + SysUserProfileUpdatePasswordReqVO reqVO = randomPojo(SysUserProfileUpdatePasswordReqVO.class, o -> {
  160 + o.setOldPassword("yudao");
  161 + o.setNewPassword("yuanma");
108 }); 162 });
109 - // 先插入一条  
110 - Long userId = userService.createUser(reqVO);  
111 - String newPassword = RandomUtils.randomString(); 163 + // mock 方法
  164 + when(passwordEncoder.encode(anyString())).then(
  165 + (Answer<String>) invocationOnMock -> "encode:" + invocationOnMock.getArgument(0));
  166 + when(passwordEncoder.matches(eq(reqVO.getOldPassword()), eq(dbUser.getPassword()))).thenReturn(true);
  167 +
  168 + // 调用
  169 + userService.updateUserPassword(userId, reqVO);
  170 + // 断言
  171 + SysUserDO user = userMapper.selectById(userId);
  172 + assertEquals("encode:yuanma", user.getPassword());
  173 + }
  174 +
  175 + @Test
  176 + public void testUpdateUserAvatar_success() {
  177 + // mock 数据
  178 + SysUserDO dbUser = randomSysUserDO();
  179 + userMapper.insert(dbUser);
  180 + // 准备参数
  181 + Long userId = dbUser.getId();
  182 + byte[] avatarFileBytes = randomBytes(10);
  183 + ByteArrayInputStream avatarFile = new ByteArrayInputStream(avatarFileBytes);
  184 + // mock 方法
  185 + String avatar = randomString();
  186 + when(fileService.createFile(anyString(), eq(avatarFileBytes))).thenReturn(avatar);
  187 +
  188 + // 调用
  189 + userService.updateUserAvatar(userId, avatarFile);
  190 + // 断言
  191 + SysUserDO user = userMapper.selectById(userId);
  192 + assertEquals(avatar, user.getAvatar());
  193 + }
  194 +
  195 + @Test
  196 + public void testUpdateUserPassword02_success() {
  197 + // mock 数据
  198 + SysUserDO dbUser = randomSysUserDO();
  199 + userMapper.insert(dbUser);
  200 + // 准备参数
  201 + Long userId = dbUser.getId();
  202 + String password = "yudao";
  203 + // mock 方法
  204 + when(passwordEncoder.encode(anyString())).then(
  205 + (Answer<String>) invocationOnMock -> "encode:" + invocationOnMock.getArgument(0));
  206 +
  207 + // 调用
  208 + userService.updateUserPassword(userId, password);
  209 + // 断言
  210 + SysUserDO user = userMapper.selectById(userId);
  211 + assertEquals("encode:" + password, user.getPassword());
  212 + }
  213 +
  214 + @Test
  215 + public void testUpdateUserStatus() {
  216 + // mock 数据
  217 + SysUserDO dbUser = randomSysUserDO();
  218 + userMapper.insert(dbUser);
  219 + // 准备参数
  220 + Long userId = dbUser.getId();
  221 + Integer status = randomCommonStatus();
  222 +
112 // 调用 223 // 调用
113 - userService.updateUserPassword(userId,newPassword); 224 + userService.updateUserStatus(userId, status);
  225 + // 断言
  226 + SysUserDO user = userMapper.selectById(userId);
  227 + assertEquals(status, user.getStatus());
  228 + }
  229 +
  230 + @Test
  231 + public void testDeleteUser(){
  232 + // mock 数据
  233 + SysUserDO dbUser = randomSysUserDO();
  234 + userMapper.insert(dbUser);
  235 + // 准备参数
  236 + Long userId = dbUser.getId();
  237 +
  238 + // 调用数据
  239 + userService.deleteUser(userId);
114 // 校验结果 240 // 校验结果
115 - assertNotEquals(passwordEncoder.encode(newPassword),userService.getUser(userId).getPassword()); 241 + assertNull(userService.getUser(userId));
  242 + // 校验调用次数
  243 + verify(permissionService, times(1)).processUserDeleted(eq(userId));
116 } 244 }
117 245
  246 +
  247 +
118 @Test 248 @Test
119 public void test_importUsers(){ 249 public void test_importUsers(){
120 SysDeptDO dept = randomPojo(SysDeptDO.class, o -> { // 等会查询到 250 SysDeptDO dept = randomPojo(SysDeptDO.class, o -> { // 等会查询到
121 o.setName("开发部"); 251 o.setName("开发部");
122 - o.setSort("1"); 252 + o.setSort(1);
123 o.setStatus(CommonStatusEnum.ENABLE.getStatus()); 253 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
124 }); 254 });
125 - int depId = deptMapper.insert(dept); 255 +// int depId = deptMapper.insert(dept);
  256 + int depId = 0;
126 // 准备参数 257 // 准备参数
127 List<SysUserImportExcelVO> list = new ArrayList<>(); 258 List<SysUserImportExcelVO> list = new ArrayList<>();
128 list.add(randomPojo(SysUserImportExcelVO.class, o->{ 259 list.add(randomPojo(SysUserImportExcelVO.class, o->{
@@ -153,18 +284,15 @@ public class SysUserServiceImplTest extends BaseSpringBootUnitTest { @@ -153,18 +284,15 @@ public class SysUserServiceImplTest extends BaseSpringBootUnitTest {
153 assertEquals(respVOUpdate.getUpdateUsernames().size(),3); 284 assertEquals(respVOUpdate.getUpdateUsernames().size(),3);
154 } 285 }
155 286
156 - public SysUserCreateReqVO randomUserVO(){  
157 -  
158 - SysUserCreateReqVO userVO = new SysUserCreateReqVO();  
159 - userVO.setUsername(RandomUtils.randomString());  
160 - userVO.setNickname(RandomUtils.randomString());  
161 - userVO.setMobile(RandomUtil.randomNumbers(11));  
162 - userVO.setEmail(RandomUtils.randomString()+"@ruoyi.com");  
163 - userVO.setDeptId(null);  
164 - userVO.setPostIds(Collections.emptySet());  
165 -  
166 - userVO.setPassword(RandomUtils.randomString());  
167 - return userVO; 287 + // ========== 随机对象 ==========
168 288
  289 + @SafeVarargs
  290 + private static SysUserDO randomSysUserDO(Consumer<SysUserDO>... consumers) {
  291 + Consumer<SysUserDO> consumer = (o) -> {
  292 + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
  293 + o.setSex(randomEle(SysSexEnum.values()).getSex()); // 保证 sex 的范围
  294 + };
  295 + return randomPojo(SysUserDO.class, ArrayUtils.append(consumer, consumers));
169 } 296 }
  297 +
170 } 298 }