|
|
|
|
@ -94,49 +94,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
|
|
|
|
when(configApi.getConfigValueByKey(USER_INIT_PASSWORD_KEY)).thenReturn(success("yudaoyuanma"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testCreatUser_success() {
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class, o -> {
|
|
|
|
|
o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
|
|
|
|
|
o.setMobile(randomString());
|
|
|
|
|
o.setPostIds(asSet(1L, 2L));
|
|
|
|
|
}).setId(null); // 避免 id 被赋值
|
|
|
|
|
// mock 账户额度充足
|
|
|
|
|
TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(1));
|
|
|
|
|
doNothing().when(tenantService).handleTenantInfo(argThat(handler -> {
|
|
|
|
|
handler.handle(tenant);
|
|
|
|
|
return true;
|
|
|
|
|
}));
|
|
|
|
|
// mock deptService 的方法
|
|
|
|
|
DeptDO dept = randomPojo(DeptDO.class, o -> {
|
|
|
|
|
o.setId(reqVO.getDeptId());
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
});
|
|
|
|
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
|
|
|
|
// mock postService 的方法
|
|
|
|
|
List<PostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
|
|
|
|
|
randomPojo(PostDO.class, o -> {
|
|
|
|
|
o.setId(postId);
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
}));
|
|
|
|
|
when(postService.getPostList(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
|
|
|
|
|
// mock passwordEncoder 的方法
|
|
|
|
|
when(passwordEncoder.encode(eq(reqVO.getPassword()))).thenReturn("yudaoyuanma");
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
Long userId = userService.createUser(reqVO);
|
|
|
|
|
// 断言
|
|
|
|
|
AdminUserDO user = userMapper.selectById(userId);
|
|
|
|
|
assertPojoEquals(reqVO, user, "password", "id");
|
|
|
|
|
assertEquals("yudaoyuanma", user.getPassword());
|
|
|
|
|
assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus());
|
|
|
|
|
// 断言关联岗位
|
|
|
|
|
List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId());
|
|
|
|
|
assertEquals(1L, userPosts.get(0).getPostId());
|
|
|
|
|
assertEquals(2L, userPosts.get(1).getPostId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testCreatUser_max() {
|
|
|
|
|
// 准备参数
|
|
|
|
|
@ -152,45 +109,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
|
|
|
|
assertServiceException(() -> userService.createUser(reqVO), USER_COUNT_MAX, -1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testUpdateUser_success() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = randomAdminUserDO(o -> o.setPostIds(asSet(1L, 2L)));
|
|
|
|
|
userMapper.insert(dbUser);
|
|
|
|
|
userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(1L));
|
|
|
|
|
userPostMapper.insert(new UserPostDO().setUserId(dbUser.getId()).setPostId(2L));
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class, o -> {
|
|
|
|
|
o.setId(dbUser.getId());
|
|
|
|
|
o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
|
|
|
|
|
o.setMobile(randomString());
|
|
|
|
|
o.setPostIds(asSet(2L, 3L));
|
|
|
|
|
});
|
|
|
|
|
// mock deptService 的方法
|
|
|
|
|
DeptDO dept = randomPojo(DeptDO.class, o -> {
|
|
|
|
|
o.setId(reqVO.getDeptId());
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
});
|
|
|
|
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
|
|
|
|
// mock postService 的方法
|
|
|
|
|
List<PostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
|
|
|
|
|
randomPojo(PostDO.class, o -> {
|
|
|
|
|
o.setId(postId);
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
}));
|
|
|
|
|
when(postService.getPostList(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
userService.updateUser(reqVO);
|
|
|
|
|
// 断言
|
|
|
|
|
AdminUserDO user = userMapper.selectById(reqVO.getId());
|
|
|
|
|
assertPojoEquals(reqVO, user, "password");
|
|
|
|
|
// 断言关联岗位
|
|
|
|
|
List<UserPostDO> userPosts = userPostMapper.selectListByUserId(user.getId());
|
|
|
|
|
assertEquals(2L, userPosts.get(0).getPostId());
|
|
|
|
|
assertEquals(3L, userPosts.get(1).getPostId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testUpdateUserLogin() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
@ -208,26 +126,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
|
|
|
|
assertNotNull(dbUser.getLoginDate());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testUpdateUserProfile_success() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = randomAdminUserDO();
|
|
|
|
|
userMapper.insert(dbUser);
|
|
|
|
|
// 准备参数
|
|
|
|
|
Long userId = dbUser.getId();
|
|
|
|
|
UserProfileUpdateReqVO reqVO = randomPojo(UserProfileUpdateReqVO.class, o -> {
|
|
|
|
|
o.setMobile(randomString());
|
|
|
|
|
o.setSex(RandomUtil.randomEle(SexEnum.values()).getSex());
|
|
|
|
|
o.setAvatar(randomURL());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
userService.updateUserProfile(userId, reqVO);
|
|
|
|
|
// 断言
|
|
|
|
|
AdminUserDO user = userMapper.selectById(userId);
|
|
|
|
|
assertPojoEquals(reqVO, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testUpdateUserPassword_success() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
@ -316,69 +214,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
|
|
|
|
assertPojoEquals(dbUser, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testGetUserByMobile() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = randomAdminUserDO();
|
|
|
|
|
userMapper.insert(dbUser);
|
|
|
|
|
// 准备参数
|
|
|
|
|
String mobile = dbUser.getMobile();
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
AdminUserDO user = userService.getUserByMobile(mobile);
|
|
|
|
|
// 断言
|
|
|
|
|
assertPojoEquals(dbUser, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testGetUserPage() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = initGetUserPageData();
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserPageReqVO reqVO = new UserPageReqVO();
|
|
|
|
|
reqVO.setUsername("tu");
|
|
|
|
|
reqVO.setMobile("1560");
|
|
|
|
|
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24));
|
|
|
|
|
reqVO.setDeptId(1L); // 其中,1L 是 2L 的父部门
|
|
|
|
|
// mock 方法
|
|
|
|
|
List<DeptDO> deptList = newArrayList(randomPojo(DeptDO.class, o -> o.setId(2L)));
|
|
|
|
|
when(deptService.getChildDeptList(eq(reqVO.getDeptId()))).thenReturn(deptList);
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
PageResult<AdminUserDO> pageResult = userService.getUserPage(reqVO);
|
|
|
|
|
// 断言
|
|
|
|
|
assertEquals(1, pageResult.getTotal());
|
|
|
|
|
assertEquals(1, pageResult.getList().size());
|
|
|
|
|
assertPojoEquals(dbUser, pageResult.getList().get(0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 初始化 getUserPage 方法的测试数据
|
|
|
|
|
*/
|
|
|
|
|
private AdminUserDO initGetUserPageData() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = randomAdminUserDO(o -> { // 等会查询到
|
|
|
|
|
o.setUsername("tudou");
|
|
|
|
|
o.setMobile("15601691300");
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
o.setCreateTime(buildTime(2020, 12, 12));
|
|
|
|
|
o.setDeptId(2L);
|
|
|
|
|
});
|
|
|
|
|
userMapper.insert(dbUser);
|
|
|
|
|
// 测试 username 不匹配
|
|
|
|
|
userMapper.insert(cloneIgnoreId(dbUser, o -> o.setUsername("dou")));
|
|
|
|
|
// 测试 mobile 不匹配
|
|
|
|
|
userMapper.insert(cloneIgnoreId(dbUser, o -> o.setMobile("18818260888")));
|
|
|
|
|
// 测试 status 不匹配
|
|
|
|
|
userMapper.insert(cloneIgnoreId(dbUser, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
|
|
|
|
|
// 测试 createTime 不匹配
|
|
|
|
|
userMapper.insert(cloneIgnoreId(dbUser, o -> o.setCreateTime(buildTime(2020, 11, 11))));
|
|
|
|
|
// 测试 dept 不匹配
|
|
|
|
|
userMapper.insert(cloneIgnoreId(dbUser, o -> o.setDeptId(0L)));
|
|
|
|
|
return dbUser;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testGetUser() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
@ -410,125 +245,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
|
|
|
|
assertEquals(dbUser, list.get(0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 情况一,校验不通过,导致插入失败
|
|
|
|
|
*/
|
|
|
|
|
@Test
|
|
|
|
|
public void testImportUserList_01() {
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
|
|
|
|
|
o.setEmail(randomEmail());
|
|
|
|
|
o.setMobile(randomMobile());
|
|
|
|
|
});
|
|
|
|
|
// mock 方法,模拟失败
|
|
|
|
|
doThrow(new ServiceException(DEPT_NOT_FOUND)).when(deptService).validateDeptList(any());
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true);
|
|
|
|
|
// 断言
|
|
|
|
|
assertEquals(0, respVO.getCreateUsernames().size());
|
|
|
|
|
assertEquals(0, respVO.getUpdateUsernames().size());
|
|
|
|
|
assertEquals(1, respVO.getFailureUsernames().size());
|
|
|
|
|
assertEquals(DEPT_NOT_FOUND.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 情况二,不存在,进行插入
|
|
|
|
|
*/
|
|
|
|
|
@Test
|
|
|
|
|
public void testImportUserList_02() {
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
|
|
|
|
|
o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
|
|
|
|
|
o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围
|
|
|
|
|
o.setEmail(randomEmail());
|
|
|
|
|
o.setMobile(randomMobile());
|
|
|
|
|
});
|
|
|
|
|
// mock deptService 的方法
|
|
|
|
|
DeptDO dept = randomPojo(DeptDO.class, o -> {
|
|
|
|
|
o.setId(importUser.getDeptId());
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
});
|
|
|
|
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
|
|
|
|
// mock passwordEncoder 的方法
|
|
|
|
|
when(passwordEncoder.encode(eq("yudaoyuanma"))).thenReturn("java");
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true);
|
|
|
|
|
// 断言
|
|
|
|
|
assertEquals(1, respVO.getCreateUsernames().size());
|
|
|
|
|
AdminUserDO user = userMapper.selectByUsername(respVO.getCreateUsernames().get(0));
|
|
|
|
|
assertPojoEquals(importUser, user);
|
|
|
|
|
assertEquals("java", user.getPassword());
|
|
|
|
|
assertEquals(0, respVO.getUpdateUsernames().size());
|
|
|
|
|
assertEquals(0, respVO.getFailureUsernames().size());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 情况三,存在,但是不强制更新
|
|
|
|
|
*/
|
|
|
|
|
@Test
|
|
|
|
|
public void testImportUserList_03() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = randomAdminUserDO();
|
|
|
|
|
userMapper.insert(dbUser);
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
|
|
|
|
|
o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
|
|
|
|
|
o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围
|
|
|
|
|
o.setUsername(dbUser.getUsername());
|
|
|
|
|
o.setEmail(randomEmail());
|
|
|
|
|
o.setMobile(randomMobile());
|
|
|
|
|
});
|
|
|
|
|
// mock deptService 的方法
|
|
|
|
|
DeptDO dept = randomPojo(DeptDO.class, o -> {
|
|
|
|
|
o.setId(importUser.getDeptId());
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
});
|
|
|
|
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), false);
|
|
|
|
|
// 断言
|
|
|
|
|
assertEquals(0, respVO.getCreateUsernames().size());
|
|
|
|
|
assertEquals(0, respVO.getUpdateUsernames().size());
|
|
|
|
|
assertEquals(1, respVO.getFailureUsernames().size());
|
|
|
|
|
assertEquals(USER_USERNAME_EXISTS.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 情况四,存在,强制更新
|
|
|
|
|
*/
|
|
|
|
|
@Test
|
|
|
|
|
public void testImportUserList_04() {
|
|
|
|
|
// mock 数据
|
|
|
|
|
AdminUserDO dbUser = randomAdminUserDO();
|
|
|
|
|
userMapper.insert(dbUser);
|
|
|
|
|
// 准备参数
|
|
|
|
|
UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
|
|
|
|
|
o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
|
|
|
|
|
o.setSex(randomEle(SexEnum.values()).getSex()); // 保证 sex 的范围
|
|
|
|
|
o.setUsername(dbUser.getUsername());
|
|
|
|
|
o.setEmail(randomEmail());
|
|
|
|
|
o.setMobile(randomMobile());
|
|
|
|
|
});
|
|
|
|
|
// mock deptService 的方法
|
|
|
|
|
DeptDO dept = randomPojo(DeptDO.class, o -> {
|
|
|
|
|
o.setId(importUser.getDeptId());
|
|
|
|
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
|
|
|
|
});
|
|
|
|
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
|
|
|
|
|
|
|
|
|
// 调用
|
|
|
|
|
UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true);
|
|
|
|
|
// 断言
|
|
|
|
|
assertEquals(0, respVO.getCreateUsernames().size());
|
|
|
|
|
assertEquals(1, respVO.getUpdateUsernames().size());
|
|
|
|
|
AdminUserDO user = userMapper.selectByUsername(respVO.getUpdateUsernames().get(0));
|
|
|
|
|
assertPojoEquals(importUser, user);
|
|
|
|
|
assertEquals(0, respVO.getFailureUsernames().size());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testValidateUserExists_notExists() {
|
|
|
|
|
assertServiceException(() -> userService.validateUserExists(randomLongId()), USER_NOT_EXISTS);
|
|
|
|
|
@ -584,30 +300,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
|
|
|
|
|
USER_EMAIL_EXISTS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testValidateMobileUnique_mobileExistsForCreate() {
|
|
|
|
|
// 准备参数
|
|
|
|
|
String mobile = randomString();
|
|
|
|
|
// mock 数据
|
|
|
|
|
userMapper.insert(randomAdminUserDO(o -> o.setMobile(mobile)));
|
|
|
|
|
|
|
|
|
|
// 调用,校验异常
|
|
|
|
|
assertServiceException(() -> userService.validateMobileUnique(null, mobile),
|
|
|
|
|
USER_MOBILE_EXISTS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testValidateMobileUnique_mobileExistsForUpdate() {
|
|
|
|
|
// 准备参数
|
|
|
|
|
Long id = randomLongId();
|
|
|
|
|
String mobile = randomString();
|
|
|
|
|
// mock 数据
|
|
|
|
|
userMapper.insert(randomAdminUserDO(o -> o.setMobile(mobile)));
|
|
|
|
|
|
|
|
|
|
// 调用,校验异常
|
|
|
|
|
assertServiceException(() -> userService.validateMobileUnique(id, mobile),
|
|
|
|
|
USER_MOBILE_EXISTS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testValidateOldPassword_notExists() {
|
|
|
|
|
|