SystemUserServiceImplTest 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package cn.iocoder.yudao.module.system.service.user;
  2. import org.junit.jupiter.api.Disabled;
  3. import org.junit.jupiter.api.Test;
  4. import org.springframework.boot.test.mock.mockito.MockBean;
  5. import javax.annotation.Resource;
  6. import cn.iocoder.yudao.module.framework.test.core.ut.BaseDbUnitTest;
  7. import cn.iocoder.yudao.module.system.controller.admin.user.vo.*;
  8. import cn.iocoder.yudao.module.system.dal.dataobject.user.SystemUserDO;
  9. import cn.iocoder.yudao.module.system.dal.mysql.user.SystemUserMapper;
  10. import cn.iocoder.yudao.framework.common.pojo.PageResult;
  11. import javax.annotation.Resource;
  12. import org.springframework.context.annotation.Import;
  13. import java.util.*;
  14. import java.time.LocalDateTime;
  15. import static cn.hutool.core.util.RandomUtil.*;
  16. import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
  17. import static cn.iocoder.yudao.module.framework.test.core.util.AssertUtils.*;
  18. import static cn.iocoder.yudao.module.framework.test.core.util.RandomUtils.*;
  19. import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
  20. import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
  21. import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
  22. import static org.junit.jupiter.api.Assertions.*;
  23. import static org.mockito.Mockito.*;
  24. /**
  25. * {@link SystemUserServiceImpl} 的单元测试类
  26. *
  27. * @author 芋道源码
  28. */
  29. @Import(SystemUserServiceImpl.class)
  30. public class SystemUserServiceImplTest extends BaseDbUnitTest {
  31. @Resource
  32. private SystemUserServiceImpl userService;
  33. @Resource
  34. private SystemUserMapper userMapper;
  35. @Test
  36. public void testCreateUser_success() {
  37. // 准备参数
  38. SystemUserCreateReqVO reqVO = randomPojo(SystemUserCreateReqVO.class);
  39. // 调用
  40. Long userId = userService.createUser(reqVO);
  41. // 断言
  42. assertNotNull(userId);
  43. // 校验记录的属性是否正确
  44. SystemUserDO user = userMapper.selectById(userId);
  45. assertPojoEquals(reqVO, user);
  46. }
  47. @Test
  48. public void testUpdateUser_success() {
  49. // mock 数据
  50. SystemUserDO dbUser = randomPojo(SystemUserDO.class);
  51. userMapper.insert(dbUser);// @Sql: 先插入出一条存在的数据
  52. // 准备参数
  53. SystemUserUpdateReqVO reqVO = randomPojo(SystemUserUpdateReqVO.class, o -> {
  54. o.setId(dbUser.getId()); // 设置更新的 ID
  55. });
  56. // 调用
  57. userService.updateUser(reqVO);
  58. // 校验是否更新正确
  59. SystemUserDO user = userMapper.selectById(reqVO.getId()); // 获取最新的
  60. assertPojoEquals(reqVO, user);
  61. }
  62. @Test
  63. public void testUpdateUser_notExists() {
  64. // 准备参数
  65. SystemUserUpdateReqVO reqVO = randomPojo(SystemUserUpdateReqVO.class);
  66. // 调用, 并断言异常
  67. assertServiceException(() -> userService.updateUser(reqVO), USER_NOT_EXISTS);
  68. }
  69. @Test
  70. public void testDeleteUser_success() {
  71. // mock 数据
  72. SystemUserDO dbUser = randomPojo(SystemUserDO.class);
  73. userMapper.insert(dbUser);// @Sql: 先插入出一条存在的数据
  74. // 准备参数
  75. Long id = dbUser.getId();
  76. // 调用
  77. userService.deleteUser(id);
  78. // 校验数据不存在了
  79. assertNull(userMapper.selectById(id));
  80. }
  81. @Test
  82. public void testDeleteUser_notExists() {
  83. // 准备参数
  84. Long id = randomLongId();
  85. // 调用, 并断言异常
  86. assertServiceException(() -> userService.deleteUser(id), USER_NOT_EXISTS);
  87. }
  88. @Test
  89. @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
  90. public void testGetUserPage() {
  91. // mock 数据
  92. SystemUserDO dbUser = randomPojo(SystemUserDO.class, o -> { // 等会查询到
  93. o.setName(null);
  94. o.setSex1(null);
  95. o.setSex2(null);
  96. o.setSex3(null);
  97. o.setBirthday(null);
  98. o.setCreateTime(null);
  99. });
  100. userMapper.insert(dbUser);
  101. // 测试 name 不匹配
  102. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setName(null)));
  103. // 测试 sex1 不匹配
  104. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setSex1(null)));
  105. // 测试 sex2 不匹配
  106. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setSex2(null)));
  107. // 测试 sex3 不匹配
  108. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setSex3(null)));
  109. // 测试 birthday 不匹配
  110. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setBirthday(null)));
  111. // 测试 createTime 不匹配
  112. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setCreateTime(null)));
  113. // 准备参数
  114. SystemUserPageReqVO reqVO = new SystemUserPageReqVO();
  115. reqVO.setName(null);
  116. reqVO.setSex1(null);
  117. reqVO.setSex2(null);
  118. reqVO.setSex3(null);
  119. reqVO.setBirthday(null);
  120. reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
  121. // 调用
  122. PageResult<SystemUserDO> pageResult = userService.getUserPage(reqVO);
  123. // 断言
  124. assertEquals(1, pageResult.getTotal());
  125. assertEquals(1, pageResult.getList().size());
  126. assertPojoEquals(dbUser, pageResult.getList().get(0));
  127. }
  128. @Test
  129. @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
  130. public void testGetUserList() {
  131. // mock 数据
  132. SystemUserDO dbUser = randomPojo(SystemUserDO.class, o -> { // 等会查询到
  133. o.setName(null);
  134. o.setSex1(null);
  135. o.setSex2(null);
  136. o.setSex3(null);
  137. o.setBirthday(null);
  138. o.setCreateTime(null);
  139. });
  140. userMapper.insert(dbUser);
  141. // 测试 name 不匹配
  142. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setName(null)));
  143. // 测试 sex1 不匹配
  144. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setSex1(null)));
  145. // 测试 sex2 不匹配
  146. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setSex2(null)));
  147. // 测试 sex3 不匹配
  148. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setSex3(null)));
  149. // 测试 birthday 不匹配
  150. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setBirthday(null)));
  151. // 测试 createTime 不匹配
  152. userMapper.insert(cloneIgnoreId(dbUser, o -> o.setCreateTime(null)));
  153. // 准备参数
  154. SystemUserExportReqVO reqVO = new SystemUserExportReqVO();
  155. reqVO.setName(null);
  156. reqVO.setSex1(null);
  157. reqVO.setSex2(null);
  158. reqVO.setSex3(null);
  159. reqVO.setBirthday(null);
  160. reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
  161. // 调用
  162. List<SystemUserDO> list = userService.getUserList(reqVO);
  163. // 断言
  164. assertEquals(1, list.size());
  165. assertPojoEquals(dbUser, list.get(0));
  166. }
  167. }