Commit cf3cfdd2d6c2967a9fc1c12f155330ebe93a6804

Authored by YunaiV
1 parent c845f3f0

补全用户与岗位的关联的单元测试,简化相关的实现代码

yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/UserPostDO.java
1 1 package cn.iocoder.yudao.module.system.dal.dataobject.dept;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import com.baomidou.mybatisplus.annotation.DbType;
  4 +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
5 5 import com.baomidou.mybatisplus.annotation.KeySequence;
6 6 import com.baomidou.mybatisplus.annotation.TableId;
7 7 import com.baomidou.mybatisplus.annotation.TableName;
... ... @@ -14,6 +14,7 @@ import lombok.EqualsAndHashCode;
14 14 * @author ruoyi
15 15 */
16 16 @TableName("system_user_post")
  17 +@KeySequence("system_user_post_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
17 18 @Data
18 19 @EqualsAndHashCode(callSuper = true)
19 20 public class UserPostDO extends BaseDO {
... ... @@ -25,10 +26,14 @@ public class UserPostDO extends BaseDO {
25 26 private Long id;
26 27 /**
27 28 * 用户 ID
  29 + *
  30 + * 关联 {@link AdminUserDO#getId()}
28 31 */
29 32 private Long userId;
30 33 /**
31 34 * 角色 ID
  35 + *
  36 + * 关联 {@link PostDO#getId()}
32 37 */
33 38 private Long postId;
34 39  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/UserPostMapper.java
... ... @@ -12,9 +12,9 @@ import java.util.List;
12 12 @Mapper
13 13 public interface UserPostMapper extends BaseMapperX<UserPostDO> {
14 14  
15   - default List<UserPostDO> selectIdList(Long id) {
  15 + default List<UserPostDO> selectListByUserId(Long userId) {
16 16 return selectList(new LambdaQueryWrapperX<UserPostDO>()
17   - .eq(UserPostDO::getUserId, id));
  17 + .eq(UserPostDO::getUserId, userId));
18 18 }
19 19  
20 20 default void deleteByUserIdAndPostId(Long userId, Collection<Long> postIds) {
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
... ... @@ -11,12 +11,7 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
11 11 import cn.iocoder.yudao.module.infra.api.file.FileApi;
12 12 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
13 13 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
14   -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserCreateReqVO;
15   -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO;
16   -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
17   -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportRespVO;
18   -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
19   -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserUpdateReqVO;
  14 +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
20 15 import cn.iocoder.yudao.module.system.convert.user.UserConvert;
21 16 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
22 17 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
... ... @@ -36,25 +31,12 @@ import org.springframework.transaction.annotation.Transactional;
36 31  
37 32 import javax.annotation.Resource;
38 33 import java.io.InputStream;
39   -import java.util.ArrayList;
40   -import java.util.Collection;
41   -import java.util.Collections;
42   -import java.util.Date;
43   -import java.util.LinkedHashMap;
44   -import java.util.List;
45   -import java.util.Map;
46   -import java.util.Set;
47   -import java.util.stream.Collectors;
  34 +import java.util.*;
48 35  
49 36 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
50   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_COUNT_MAX;
51   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_EMAIL_EXISTS;
52   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IMPORT_LIST_IS_EMPTY;
53   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_IS_DISABLE;
54   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_MOBILE_EXISTS;
55   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS;
56   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_PASSWORD_FAILED;
57   -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXISTS;
  37 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
  38 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  39 +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
58 40  
59 41 /**
60 42 * 后台用户 Service 实现类
... ... @@ -98,22 +80,17 @@ public class AdminUserServiceImpl implements AdminUserService {
98 80 }
99 81 });
100 82 // 校验正确性
101   - this.checkCreateOrUpdate(null, reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(),
  83 + checkCreateOrUpdate(null, reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(),
102 84 reqVO.getDeptId(), reqVO.getPostIds());
103 85 // 插入用户
104 86 AdminUserDO user = UserConvert.INSTANCE.convert(reqVO);
105 87 user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
106 88 user.setPassword(passwordEncoder.encode(reqVO.getPassword())); // 加密密码
107 89 userMapper.insert(user);
108   - Set<Long> postIds = user.getPostIds();
109   - if (CollectionUtil.isNotEmpty(postIds)) {
110   - List<UserPostDO> insertUserPostList = CollectionUtils.convertList(postIds, postId -> {
111   - UserPostDO entity = new UserPostDO();
112   - entity.setUserId(user.getId());
113   - entity.setPostId(postId);
114   - return entity;
115   - });
116   - userPostMapper.insertBatch(insertUserPostList);
  90 + // 插入关联岗位
  91 + if (CollectionUtil.isNotEmpty(user.getPostIds())) {
  92 + userPostMapper.insertBatch(convertList(user.getPostIds(),
  93 + postId -> new UserPostDO().setUserId(user.getId()).setPostId(postId)));
117 94 }
118 95 return user.getId();
119 96 }
... ... @@ -122,48 +99,32 @@ public class AdminUserServiceImpl implements AdminUserService {
122 99 @Transactional(rollbackFor = Exception.class)
123 100 public void updateUser(UserUpdateReqVO reqVO) {
124 101 // 校验正确性
125   - this.checkCreateOrUpdate(reqVO.getId(), reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(),
  102 + checkCreateOrUpdate(reqVO.getId(), reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(),
126 103 reqVO.getDeptId(), reqVO.getPostIds());
127 104 // 更新用户
128 105 AdminUserDO updateObj = UserConvert.INSTANCE.convert(reqVO);
129 106 userMapper.updateById(updateObj);
130 107 // 更新岗位
131 108 updateUserPost(reqVO, updateObj);
132   -
133 109 }
134 110  
135 111 private void updateUserPost(UserUpdateReqVO reqVO, AdminUserDO updateObj) {
136   - Set<Long> postIds = updateObj.getPostIds();
137 112 Long userId = reqVO.getId();
138   - List<Long> dbPostIds = userPostMapper.selectIdList(userId)
139   - .stream()
140   - .map(UserPostDO::getPostId)
141   - .collect(Collectors.toList());
  113 + Set<Long> dbPostIds = convertSet(userPostMapper.selectListByUserId(userId), UserPostDO::getPostId);
142 114 // 计算新增和删除的岗位编号
  115 + Set<Long> postIds = updateObj.getPostIds();
143 116 Collection<Long> createPostIds = CollUtil.subtract(postIds, dbPostIds);
144 117 Collection<Long> deletePostIds = CollUtil.subtract(dbPostIds, postIds);
145 118 // 执行新增和删除。对于已经授权的菜单,不用做任何处理
146 119 if (!CollectionUtil.isEmpty(createPostIds)) {
147   - List<UserPostDO> list = createUserPost(userId, createPostIds);
148   - userPostMapper.insertBatch(list);
  120 + userPostMapper.insertBatch(convertList(createPostIds,
  121 + postId -> new UserPostDO().setUserId(userId).setPostId(postId)));
149 122 }
150 123 if (!CollectionUtil.isEmpty(deletePostIds)) {
151 124 userPostMapper.deleteByUserIdAndPostId(userId, deletePostIds);
152 125 }
153 126 }
154 127  
155   - private List<UserPostDO> createUserPost(Long userId, Collection<Long> createPostIds) {
156   - return createPostIds
157   - .stream()
158   - .map(postId -> {
159   - UserPostDO entity = new UserPostDO();
160   - entity.setUserId(userId);
161   - entity.setPostId(postId);
162   - return entity;
163   - })
164   - .collect(Collectors.toList());
165   - }
166   -
167 128 @Override
168 129 public void updateUserLogin(Long id, String loginIp) {
169 130 userMapper.updateById(new AdminUserDO().setId(id).setLoginIp(loginIp).setLoginDate(new Date()));
... ... @@ -172,9 +133,9 @@ public class AdminUserServiceImpl implements AdminUserService {
172 133 @Override
173 134 public void updateUserProfile(Long id, UserProfileUpdateReqVO reqVO) {
174 135 // 校验正确性
175   - this.checkUserExists(id);
176   - this.checkEmailUnique(id, reqVO.getEmail());
177   - this.checkMobileUnique(id, reqVO.getMobile());
  136 + checkUserExists(id);
  137 + checkEmailUnique(id, reqVO.getEmail());
  138 + checkMobileUnique(id, reqVO.getMobile());
178 139 // 执行更新
179 140 userMapper.updateById(UserConvert.INSTANCE.convert(reqVO).setId(id));
180 141 }
... ... @@ -182,7 +143,7 @@ public class AdminUserServiceImpl implements AdminUserService {
182 143 @Override
183 144 public void updateUserPassword(Long id, UserProfileUpdatePasswordReqVO reqVO) {
184 145 // 校验旧密码密码
185   - this.checkOldPassword(id, reqVO.getOldPassword());
  146 + checkOldPassword(id, reqVO.getOldPassword());
186 147 // 执行更新
187 148 AdminUserDO updateObj = new AdminUserDO().setId(id);
188 149 updateObj.setPassword(passwordEncoder.encode(reqVO.getNewPassword())); // 加密密码
... ... @@ -191,7 +152,7 @@ public class AdminUserServiceImpl implements AdminUserService {
191 152  
192 153 @Override
193 154 public String updateUserAvatar(Long id, InputStream avatarFile) throws Exception {
194   - this.checkUserExists(id);
  155 + checkUserExists(id);
195 156 // 存储文件
196 157 String avatar = fileApi.createFile(IoUtil.readBytes(avatarFile));
197 158 // 更新路径
... ... @@ -205,7 +166,7 @@ public class AdminUserServiceImpl implements AdminUserService {
205 166 @Override
206 167 public void updateUserPassword(Long id, String password) {
207 168 // 校验用户存在
208   - this.checkUserExists(id);
  169 + checkUserExists(id);
209 170 // 更新密码
210 171 AdminUserDO updateObj = new AdminUserDO();
211 172 updateObj.setId(id);
... ... @@ -216,7 +177,7 @@ public class AdminUserServiceImpl implements AdminUserService {
216 177 @Override
217 178 public void updateUserStatus(Long id, Integer status) {
218 179 // 校验用户存在
219   - this.checkUserExists(id);
  180 + checkUserExists(id);
220 181 // 更新状态
221 182 AdminUserDO updateObj = new AdminUserDO();
222 183 updateObj.setId(id);
... ... @@ -228,7 +189,7 @@ public class AdminUserServiceImpl implements AdminUserService {
228 189 @Transactional(rollbackFor = Exception.class)
229 190 public void deleteUser(Long id) {
230 191 // 校验用户存在
231   - this.checkUserExists(id);
  192 + checkUserExists(id);
232 193 // 删除用户
233 194 userMapper.deleteById(id);
234 195 // 删除用户关联数据
... ... @@ -244,7 +205,7 @@ public class AdminUserServiceImpl implements AdminUserService {
244 205  
245 206 @Override
246 207 public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) {
247   - return userMapper.selectPage(reqVO, this.getDeptCondition(reqVO.getDeptId()));
  208 + return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId()));
248 209 }
249 210  
250 211 @Override
... ... @@ -265,15 +226,11 @@ public class AdminUserServiceImpl implements AdminUserService {
265 226 if (CollUtil.isEmpty(postIds)) {
266 227 return Collections.emptyList();
267 228 }
268   - List<Long> userIdList = userPostMapper.selectListByPostIds(postIds)
269   - .stream()
270   - .map(UserPostDO::getUserId)
271   - .distinct()
272   - .collect(Collectors.toList());;
273   - if (userIdList.isEmpty()) {
  229 + Set<Long> userIds = convertSet(userPostMapper.selectListByPostIds(postIds), UserPostDO::getUserId);
  230 + if (CollUtil.isEmpty(userIds)) {
274 231 return Collections.emptyList();
275 232 }
276   - return userMapper.selectBatchIds(userIdList);
  233 + return userMapper.selectBatchIds(userIds);
277 234 }
278 235  
279 236 @Override
... ... @@ -306,7 +263,7 @@ public class AdminUserServiceImpl implements AdminUserService {
306 263  
307 264 @Override
308 265 public List<AdminUserDO> getUsers(UserExportReqVO reqVO) {
309   - return userMapper.selectList(reqVO, this.getDeptCondition(reqVO.getDeptId()));
  266 + return userMapper.selectList(reqVO, getDeptCondition(reqVO.getDeptId()));
310 267 }
311 268  
312 269 @Override
... ... @@ -328,7 +285,7 @@ public class AdminUserServiceImpl implements AdminUserService {
328 285 if (deptId == null) {
329 286 return Collections.emptySet();
330 287 }
331   - Set<Long> deptIds = CollectionUtils.convertSet(deptService.getDeptsByParentIdFromCache(
  288 + Set<Long> deptIds = convertSet(deptService.getDeptsByParentIdFromCache(
332 289 deptId, true), DeptDO::getId);
333 290 deptIds.add(deptId); // 包括自身
334 291 return deptIds;
... ... @@ -337,13 +294,13 @@ public class AdminUserServiceImpl implements AdminUserService {
337 294 private void checkCreateOrUpdate(Long id, String username, String mobile, String email,
338 295 Long deptId, Set<Long> postIds) {
339 296 // 校验用户存在
340   - this.checkUserExists(id);
  297 + checkUserExists(id);
341 298 // 校验用户名唯一
342   - this.checkUsernameUnique(id, username);
  299 + checkUsernameUnique(id, username);
343 300 // 校验手机号唯一
344   - this.checkMobileUnique(id, mobile);
  301 + checkMobileUnique(id, mobile);
345 302 // 校验邮箱唯一
346   - this.checkEmailUnique(id, email);
  303 + checkEmailUnique(id, email);
347 304 // 校验部门处于开启状态
348 305 deptService.validDepts(CollectionUtils.singleton(deptId));
349 306 // 校验岗位处于开启状态
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/UserServiceImplTest.java renamed to yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
... ... @@ -7,21 +7,23 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 7 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
8 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
9 9 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
  10 +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
10 11 import cn.iocoder.yudao.module.infra.api.file.FileApi;
11 12 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
12 13 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
13 14 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
14 15 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
15 16 import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
  17 +import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
16 18 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
17 19 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
  20 +import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
18 21 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
19 22 import cn.iocoder.yudao.module.system.enums.common.SexEnum;
20 23 import cn.iocoder.yudao.module.system.service.dept.DeptService;
21 24 import cn.iocoder.yudao.module.system.service.dept.PostService;
22 25 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
23 26 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
24   -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
25 27 import org.junit.jupiter.api.Test;
26 28 import org.mockito.stubbing.Answer;
27 29 import org.springframework.boot.test.mock.mockito.MockBean;
... ... @@ -30,16 +32,19 @@ import org.springframework.security.crypto.password.PasswordEncoder;
30 32  
31 33 import javax.annotation.Resource;
32 34 import java.io.ByteArrayInputStream;
  35 +import java.util.Collection;
33 36 import java.util.List;
34 37 import java.util.function.Consumer;
35 38  
36 39 import static cn.hutool.core.util.RandomUtil.randomBytes;
37 40 import static cn.hutool.core.util.RandomUtil.randomEle;
  41 +import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
38 42 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
39 43 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
40 44 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
41 45 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
42 46 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
  47 +import static java.util.Collections.singleton;
43 48 import static org.assertj.core.util.Lists.newArrayList;
44 49 import static org.junit.jupiter.api.Assertions.assertEquals;
45 50 import static org.junit.jupiter.api.Assertions.assertNull;
... ... @@ -47,13 +52,15 @@ import static org.mockito.ArgumentMatchers.*;
47 52 import static org.mockito.Mockito.*;
48 53  
49 54 @Import(AdminUserServiceImpl.class)
50   -public class UserServiceImplTest extends BaseDbUnitTest {
  55 +public class AdminUserServiceImplTest extends BaseDbUnitTest {
51 56  
52 57 @Resource
53 58 private AdminUserServiceImpl userService;
54 59  
55 60 @Resource
56 61 private AdminUserMapper userMapper;
  62 + @Resource
  63 + private UserPostMapper userPostMapper;
57 64  
58 65 @MockBean
59 66 private DeptService deptService;
... ... @@ -74,6 +81,7 @@ public class UserServiceImplTest extends BaseDbUnitTest {
74 81 UserCreateReqVO reqVO = randomPojo(UserCreateReqVO.class, o -> {
75 82 o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
76 83 o.setMobile(randomString());
  84 + o.setPostIds(asSet(1L, 2L));
77 85 });
78 86 // mock 账户额度充足
79 87 TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(1));
... ... @@ -104,6 +112,10 @@ public class UserServiceImplTest extends BaseDbUnitTest {
104 112 assertPojoEquals(reqVO, user, "password");
105 113 assertEquals("yudaoyuanma", user.getPassword());
106 114 assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus());
  115 + // 断言关联岗位
  116 + List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId());
  117 + assertEquals(1L, userPosts.get(0).getPostId());
  118 + assertEquals(2L, userPosts.get(1).getPostId());
107 119 }
108 120  
109 121 @Test
... ... @@ -124,13 +136,16 @@ public class UserServiceImplTest extends BaseDbUnitTest {
124 136 @Test
125 137 public void testUpdateUser_success() {
126 138 // mock 数据
127   - AdminUserDO dbUser = randomAdminUserDO();
  139 + AdminUserDO dbUser = randomAdminUserDO(o -> o.setPostIds(asSet(1L, 2L)));
128 140 userMapper.insert(dbUser);
  141 + userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(1L));
  142 + userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(2L));
129 143 // 准备参数
130 144 UserUpdateReqVO reqVO = randomPojo(UserUpdateReqVO.class, o -> {
131 145 o.setId(dbUser.getId());
132 146 o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
133 147 o.setMobile(randomString());
  148 + o.setPostIds(asSet(2L, 3L));
134 149 });
135 150 // mock deptService 的方法
136 151 DeptDO dept = randomPojo(DeptDO.class, o -> {
... ... @@ -151,6 +166,10 @@ public class UserServiceImplTest extends BaseDbUnitTest {
151 166 // 断言
152 167 AdminUserDO user = userMapper.selectById(reqVO.getId());
153 168 assertPojoEquals(reqVO, user);
  169 + // 断言关联岗位
  170 + List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId());
  171 + assertEquals(2L, userPosts.get(0).getPostId());
  172 + assertEquals(3L, userPosts.get(1).getPostId());
154 173 }
155 174  
156 175 @Test
... ... @@ -552,22 +571,26 @@ public class UserServiceImplTest extends BaseDbUnitTest {
552 571 verify(passwordEncoder, times(1)).matches(eq(oldPassword), eq(user.getPassword()));
553 572 }
554 573  
555   -// @Test //TODO jason 已经移到userCoreService.getUsersByPostIds
556   -// public void testUsersByPostIds() {
557   -// // 准备参数
558   -// Collection<Long> postIds = asSet(10L, 20L);
559   -// // mock 方法
560   -// AdminUserDO user1 = randomAdminUserDO(o -> o.setPostIds(asSet(10L, 30L)));
561   -// userMapper.insert(user1);
562   -// AdminUserDO user2 = randomAdminUserDO(o -> o.setPostIds(singleton(100L)));
563   -// userMapper.insert(user2);
564   -//
565   -// // 调用
566   -// List<AdminUserDO> result = userService.getUsersByPostIds(postIds);
567   -// // 断言
568   -// assertEquals(1, result.size());
569   -// assertEquals(user1, result.get(0));
570   -// }
  574 + @Test
  575 + public void testUsersByPostIds() {
  576 + // 准备参数
  577 + Collection<Long> postIds = asSet(10L, 20L);
  578 + // mock user1 数据
  579 + AdminUserDO user1 = randomAdminUserDO(o -> o.setPostIds(asSet(10L, 30L)));
  580 + userMapper.insert(user1);
  581 + userPostMapper.insert(new UserPostDO().setUserId(user1.getId()).setPostId(10L));
  582 + userPostMapper.insert(new UserPostDO().setUserId(user1.getId()).setPostId(30L));
  583 + // mock user2 数据
  584 + AdminUserDO user2 = randomAdminUserDO(o -> o.setPostIds(singleton(100L)));
  585 + userMapper.insert(user2);
  586 + userPostMapper.insert(new UserPostDO().setUserId(user2.getId()).setPostId(100L));
  587 +
  588 + // 调用
  589 + List<AdminUserDO> result = userService.getUsersByPostIds(postIds);
  590 + // 断言
  591 + assertEquals(1, result.size());
  592 + assertEquals(user1, result.get(0));
  593 + }
571 594  
572 595 // ========== 随机对象 ==========
573 596  
... ...
yudao-module-system/yudao-module-system-biz/src/test/resources/sql/clean.sql
... ... @@ -10,7 +10,7 @@ DELETE FROM &quot;system_user_session&quot;;
10 10 DELETE FROM "system_post";
11 11 DELETE FROM "system_login_log";
12 12 DELETE FROM "system_operate_log";
13   -DELETE FROM "system_user";
  13 +DELETE FROM "system_users";
14 14 DELETE FROM "system_sms_channel";
15 15 DELETE FROM "system_sms_template";
16 16 DELETE FROM "system_sms_log";
... ...
yudao-module-system/yudao-module-system-biz/src/test/resources/sql/create_tables.sql
... ... @@ -225,7 +225,7 @@ CREATE TABLE IF NOT EXISTS `system_operate_log` (
225 225 PRIMARY KEY (`id`)
226 226 ) COMMENT ='操作日志记录';
227 227  
228   -CREATE TABLE IF NOT EXISTS "system_user" (
  228 +CREATE TABLE IF NOT EXISTS "system_users" (
229 229 "id" bigint not null GENERATED BY DEFAULT AS IDENTITY,
230 230 "username" varchar(30) not null,
231 231 "password" varchar(100) not null default '',
... ...