package cn.iocoder.yudao.module.system.service.user;
import cn.hutool.core.util.RandomUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import cn.iocoder.yudao.module.system.enums.common.SexEnum;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.dept.PostService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
import org.junit.jupiter.api.Test;
import org.mockito.stubbing.Answer;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.security.crypto.password.PasswordEncoder;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import static cn.hutool.core.util.RandomUtil.randomBytes;
import static cn.hutool.core.util.RandomUtil.randomEle;
import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
import static java.util.Collections.singleton;
import static java.util.Collections.singletonList;
import static org.assertj.core.util.Lists.newArrayList;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
@Import(AdminUserServiceImpl.class)
public class AdminUserServiceImplTest extends BaseDbUnitTest {
@Resource
private AdminUserServiceImpl userService;
@Resource
private AdminUserMapper userMapper;
@Resource
private UserPostMapper userPostMapper;
@MockBean
private DeptService deptService;
@MockBean
private PostService postService;
@MockBean
private PermissionService permissionService;
@MockBean
private PasswordEncoder passwordEncoder;
@MockBean
private TenantService tenantService;
@MockBean
private FileApi fileApi;
@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() {
// 准备参数
UserSaveReqVO reqVO = randomPojo(UserSaveReqVO.class);
// mock 账户额度不足
TenantDO tenant = randomPojo(TenantDO.class, o -> o.setAccountCount(-1));
doNothing().when(tenantService).handleTenantInfo(argThat(handler -> {
handler.handle(tenant);
return true;
}));
// 调用,并断言异常
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).ge
没有合适的资源?快使用搜索试试~ 我知道了~
java,后端开发的例子,具有一定的参考价值
共474个文件
java:449个
http:16个
xml:4个
需积分: 0 0 下载量 152 浏览量
2024-01-08
10:16:05
上传
评论
收藏 629KB ZIP 举报
温馨提示
java,后端开发的例子,具有一定的参考价值。
资源推荐
资源详情
资源评论
收起资源包目录
java,后端开发的例子,具有一定的参考价值 (474个子文件)
OAuth2OpenController.http 2KB
RoleController.http 933B
AuthController.http 815B
OAuth2ClientController.http 655B
TenantController.http 557B
OAuth2UserController.http 422B
MailTemplateController.http 335B
SmsTemplateController.http 333B
ErrorCodeController.http 227B
SensitiveWordController.http 211B
UserController.http 167B
UserProfileController.http 160B
OperateLogController.http 154B
DictDataController.http 149B
MenuController.http 133B
AreaController.http 115B
AdminUserServiceImplTest.java 28KB
PermissionServiceTest.java 23KB
SocialClientServiceImplTest.java 20KB
TenantServiceImplTest.java 18KB
OAuth2OpenController.java 18KB
AdminUserServiceImpl.java 17KB
OAuth2OpenControllerTest.java 17KB
MailSendServiceImplTest.java 16KB
AdminAuthServiceImplTest.java 16KB
SmsTemplateServiceImplTest.java 15KB
SocialClientServiceImpl.java 14KB
PermissionServiceImpl.java 14KB
RoleServiceImplTest.java 14KB
SmsSendServiceImplTest.java 14KB
OAuth2TokenServiceImplTest.java 14KB
DictDataServiceImplTest.java 13KB
SocialUserServiceImplTest.java 13KB
SensitiveWordServiceImplTest.java 13KB
ErrorCodeConstants.java 13KB
NotifyMessageServiceImplTest.java 12KB
ErrorCodeServiceTest.java 12KB
TenantServiceImpl.java 12KB
MenuServiceImplTest.java 11KB
OAuth2ApproveServiceImplTest.java 11KB
AdminAuthServiceImpl.java 10KB
DeptServiceImplTest.java 10KB
DictTypeServiceImplTest.java 10KB
TenantPackageServiceImplTest.java 10KB
SmsChannelServiceTest.java 10KB
OAuth2ClientServiceImplTest.java 9KB
SensitiveWordServiceImpl.java 9KB
SmsLogServiceImplTest.java 9KB
RoleServiceImpl.java 8KB
PostServiceImplTest.java 8KB
MailTemplateServiceImplTest.java 8KB
NotifySendServiceImplTest.java 8KB
SmsSendServiceImpl.java 8KB
SmsCodeServiceImplTest.java 8KB
UserController.java 8KB
DeptServiceImpl.java 8KB
MailLogServiceImplTest.java 8KB
SmsTemplateServiceImpl.java 8KB
OAuth2TokenServiceImpl.java 7KB
MenuServiceImpl.java 7KB
NotifyTemplateServiceImplTest.java 7KB
AuthController.java 7KB
SocialUserServiceImpl.java 7KB
OAuth2GrantServiceImplTest.java 7KB
MailAccountServiceImplTest.java 7KB
ErrorCodeServiceImpl.java 7KB
MailSendServiceImpl.java 6KB
OAuth2ClientServiceImpl.java 6KB
DictDataServiceImpl.java 6KB
SmsChannelServiceImpl.java 6KB
TenantController.java 5KB
NotifyTemplateServiceImpl.java 5KB
SensitiveWordController.java 5KB
MailTemplateServiceImpl.java 5KB
SimpleTrie.java 5KB
OperateLogServiceImplTest.java 5KB
AdminUserService.java 5KB
SmsLogRespVO.java 5KB
SmsCodeServiceImpl.java 5KB
DictDataController.java 5KB
PostServiceImpl.java 5KB
UserProfileController.java 5KB
DictTypeController.java 5KB
NoticeServiceImplTest.java 5KB
RoleController.java 5KB
PostController.java 5KB
DictTypeServiceImpl.java 5KB
NotifyMessageController.java 5KB
SmsTemplateController.java 5KB
OAuth2GrantServiceImpl.java 4KB
OAuth2ApproveServiceImpl.java 4KB
TenantPackageServiceImpl.java 4KB
NotifyTemplateController.java 4KB
MailTemplateController.java 4KB
ErrorCodeController.java 4KB
NoticeController.java 4KB
AuthConvert.java 4KB
OAuth2Utils.java 4KB
OperateLogDO.java 4KB
OAuth2CodeServiceImplTest.java 4KB
共 474 条
- 1
- 2
- 3
- 4
- 5
资源评论
散装咖啡
- 粉丝: 0
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功