mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	完善 PostServiceImpl 单元测试
This commit is contained in:
		@@ -218,7 +218,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
 | 
			
		||||
            BpmTaskAssignRuleTypeEnum.DEPT_LEADER.getType())) {
 | 
			
		||||
            deptApi.validateDeptList(options);
 | 
			
		||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.POST.getType())) {
 | 
			
		||||
            postApi.validPosts(options);
 | 
			
		||||
            postApi.validPostList(options);
 | 
			
		||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER.getType())) {
 | 
			
		||||
            adminUserApi.validUsers(options);
 | 
			
		||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER_GROUP.getType())) {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,6 @@ public interface PostApi {
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 岗位编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validPosts(Collection<Long> ids);
 | 
			
		||||
    void validPostList(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ public interface ErrorCodeConstants {
 | 
			
		||||
    ErrorCode DEPT_EXITS_CHILDREN = new ErrorCode(1002004003, "存在子部门,无法删除");
 | 
			
		||||
    ErrorCode DEPT_PARENT_ERROR = new ErrorCode(1002004004, "不能设置自己为父部门");
 | 
			
		||||
    ErrorCode DEPT_EXISTS_USER = new ErrorCode(1002004005, "部门中存在员工,无法删除");
 | 
			
		||||
    ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1002004006, "部门不处于开启状态,不允许选择");
 | 
			
		||||
    ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1002004006, "部门({})不处于开启状态,不允许选择");
 | 
			
		||||
    ErrorCode DEPT_PARENT_IS_CHILD = new ErrorCode(1002004007, "不能设置自己的子部门为父部门");
 | 
			
		||||
 | 
			
		||||
    // ========== 岗位模块 1002005000 ==========
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,8 @@ public class PostApiImpl implements PostApi {
 | 
			
		||||
    private PostService postService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validPosts(Collection<Long> ids) {
 | 
			
		||||
        postService.validPosts(ids);
 | 
			
		||||
    public void validPostList(Collection<Long> ids) {
 | 
			
		||||
        postService.validatePostList(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,7 @@ public class PostController {
 | 
			
		||||
    @ApiOperation(value = "获取岗位精简信息列表", notes = "只包含被开启的岗位,主要用于前端的下拉选项")
 | 
			
		||||
    public CommonResult<List<PostSimpleRespVO>> getSimplePosts() {
 | 
			
		||||
        // 获得岗位列表,只要开启状态的
 | 
			
		||||
        List<PostDO> list = postService.getPosts(null, Collections.singleton(CommonStatusEnum.ENABLE.getStatus()));
 | 
			
		||||
        List<PostDO> list = postService.getPostList(null, Collections.singleton(CommonStatusEnum.ENABLE.getStatus()));
 | 
			
		||||
        // 排序后,返回给前端
 | 
			
		||||
        list.sort(Comparator.comparing(PostDO::getSort));
 | 
			
		||||
        return success(PostConvert.INSTANCE.convertList02(list));
 | 
			
		||||
@@ -90,7 +90,7 @@ public class PostController {
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:post:export')")
 | 
			
		||||
    @OperateLog(type = EXPORT)
 | 
			
		||||
    public void export(HttpServletResponse response, @Validated PostExportReqVO reqVO) throws IOException {
 | 
			
		||||
        List<PostDO> posts = postService.getPosts(reqVO);
 | 
			
		||||
        List<PostDO> posts = postService.getPostList(reqVO);
 | 
			
		||||
        List<PostExcelVO> data = PostConvert.INSTANCE.convertList03(posts);
 | 
			
		||||
        // 输出
 | 
			
		||||
        ExcelUtils.write(response, "岗位数据.xls", "岗位列表", PostExcelVO.class, data);
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@ public class OAuth2UserController {
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
        if (CollUtil.isNotEmpty(user.getPostIds())) {
 | 
			
		||||
            List<PostDO> posts = postService.getPosts(user.getPostIds());
 | 
			
		||||
            List<PostDO> posts = postService.getPostList(user.getPostIds());
 | 
			
		||||
            resp.setPosts(OAuth2UserConvert.INSTANCE.convertList(posts));
 | 
			
		||||
        }
 | 
			
		||||
        return success(resp);
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,7 @@ public class UserProfileController {
 | 
			
		||||
        }
 | 
			
		||||
        // 获得岗位信息
 | 
			
		||||
        if (CollUtil.isNotEmpty(user.getPostIds())) {
 | 
			
		||||
            List<PostDO> posts = postService.getPosts(user.getPostIds());
 | 
			
		||||
            List<PostDO> posts = postService.getPostList(user.getPostIds());
 | 
			
		||||
            resp.setPosts(UserConvert.INSTANCE.convertList02(posts));
 | 
			
		||||
        }
 | 
			
		||||
        // 获得社交用户信息
 | 
			
		||||
 
 | 
			
		||||
@@ -49,8 +49,8 @@ public interface PostService {
 | 
			
		||||
     * @param ids 岗位编号数组。如果为空,不进行筛选
 | 
			
		||||
     * @return 部门列表
 | 
			
		||||
     */
 | 
			
		||||
    default List<PostDO> getPosts(@Nullable Collection<Long> ids) {
 | 
			
		||||
        return getPosts(ids, asSet(CommonStatusEnum.ENABLE.getStatus(), CommonStatusEnum.DISABLE.getStatus()));
 | 
			
		||||
    default List<PostDO> getPostList(@Nullable Collection<Long> ids) {
 | 
			
		||||
        return getPostList(ids, asSet(CommonStatusEnum.ENABLE.getStatus(), CommonStatusEnum.DISABLE.getStatus()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -60,7 +60,7 @@ public interface PostService {
 | 
			
		||||
     * @param statuses 状态数组。如果为空,不进行筛选
 | 
			
		||||
     * @return 部门列表
 | 
			
		||||
     */
 | 
			
		||||
    List<PostDO> getPosts(@Nullable Collection<Long> ids, @Nullable Collection<Integer> statuses);
 | 
			
		||||
    List<PostDO> getPostList(@Nullable Collection<Long> ids, @Nullable Collection<Integer> statuses);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得岗位分页列表
 | 
			
		||||
@@ -76,7 +76,7 @@ public interface PostService {
 | 
			
		||||
     * @param reqVO 查询条件
 | 
			
		||||
     * @return 部门列表
 | 
			
		||||
     */
 | 
			
		||||
    List<PostDO> getPosts(PostExportReqVO reqVO);
 | 
			
		||||
    List<PostDO> getPostList(PostExportReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得岗位信息
 | 
			
		||||
@@ -93,6 +93,6 @@ public interface PostService {
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 岗位编号数组
 | 
			
		||||
     */
 | 
			
		||||
    void validPosts(Collection<Long> ids);
 | 
			
		||||
    void validatePostList(Collection<Long> ids);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.system.service.dept;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO;
 | 
			
		||||
@@ -38,7 +37,8 @@ public class PostServiceImpl implements PostService {
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long createPost(PostCreateReqVO reqVO) {
 | 
			
		||||
        // 校验正确性
 | 
			
		||||
        this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getCode());
 | 
			
		||||
        validatePostForCreateOrUpdate(null, reqVO.getName(), reqVO.getCode());
 | 
			
		||||
 | 
			
		||||
        // 插入岗位
 | 
			
		||||
        PostDO post = PostConvert.INSTANCE.convert(reqVO);
 | 
			
		||||
        postMapper.insert(post);
 | 
			
		||||
@@ -48,7 +48,8 @@ public class PostServiceImpl implements PostService {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updatePost(PostUpdateReqVO reqVO) {
 | 
			
		||||
        // 校验正确性
 | 
			
		||||
        this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode());
 | 
			
		||||
        validatePostForCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode());
 | 
			
		||||
 | 
			
		||||
        // 更新岗位
 | 
			
		||||
        PostDO updateObj = PostConvert.INSTANCE.convert(reqVO);
 | 
			
		||||
        postMapper.updateById(updateObj);
 | 
			
		||||
@@ -57,13 +58,59 @@ public class PostServiceImpl implements PostService {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deletePost(Long id) {
 | 
			
		||||
        // 校验是否存在
 | 
			
		||||
        this.checkPostExists(id);
 | 
			
		||||
        validatePostExists(id);
 | 
			
		||||
        // 删除部门
 | 
			
		||||
        postMapper.deleteById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validatePostForCreateOrUpdate(Long id, String name, String code) {
 | 
			
		||||
        // 校验自己存在
 | 
			
		||||
        validatePostExists(id);
 | 
			
		||||
        // 校验岗位名的唯一性
 | 
			
		||||
        validatePostNameUnique(id, name);
 | 
			
		||||
        // 校验岗位编码的唯一性
 | 
			
		||||
        validatePostCodeUnique(id, code);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validatePostNameUnique(Long id, String name) {
 | 
			
		||||
        PostDO post = postMapper.selectByName(name);
 | 
			
		||||
        if (post == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 如果 id 为空,说明不用比较是否为相同 id 的岗位
 | 
			
		||||
        if (id == null) {
 | 
			
		||||
            throw exception(POST_NAME_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
        if (!post.getId().equals(id)) {
 | 
			
		||||
            throw exception(POST_NAME_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validatePostCodeUnique(Long id, String code) {
 | 
			
		||||
        PostDO post = postMapper.selectByCode(code);
 | 
			
		||||
        if (post == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 如果 id 为空,说明不用比较是否为相同 id 的岗位
 | 
			
		||||
        if (id == null) {
 | 
			
		||||
            throw exception(POST_CODE_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
        if (!post.getId().equals(id)) {
 | 
			
		||||
            throw exception(POST_CODE_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validatePostExists(Long id) {
 | 
			
		||||
        if (id == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        if (postMapper.selectById(id) == null) {
 | 
			
		||||
            throw exception(POST_NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<PostDO> getPosts(Collection<Long> ids, Collection<Integer> statuses) {
 | 
			
		||||
    public List<PostDO> getPostList(Collection<Long> ids, Collection<Integer> statuses) {
 | 
			
		||||
        return postMapper.selectList(ids, statuses);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -73,7 +120,7 @@ public class PostServiceImpl implements PostService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<PostDO> getPosts(PostExportReqVO reqVO) {
 | 
			
		||||
    public List<PostDO> getPostList(PostExportReqVO reqVO) {
 | 
			
		||||
        return postMapper.selectList(reqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -82,55 +129,8 @@ public class PostServiceImpl implements PostService {
 | 
			
		||||
        return postMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkCreateOrUpdate(Long id, String name, String code) {
 | 
			
		||||
        // 校验自己存在
 | 
			
		||||
        checkPostExists(id);
 | 
			
		||||
        // 校验岗位名的唯一性
 | 
			
		||||
        checkPostNameUnique(id, name);
 | 
			
		||||
        // 校验岗位编码的唯一性
 | 
			
		||||
        checkPostCodeUnique(id, code);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkPostNameUnique(Long id, String name) {
 | 
			
		||||
        PostDO post = postMapper.selectByName(name);
 | 
			
		||||
        if (post == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 如果 id 为空,说明不用比较是否为相同 id 的岗位
 | 
			
		||||
        if (id == null) {
 | 
			
		||||
            throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
        if (!post.getId().equals(id)) {
 | 
			
		||||
            throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkPostCodeUnique(Long id, String code) {
 | 
			
		||||
        PostDO post = postMapper.selectByCode(code);
 | 
			
		||||
        if (post == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // 如果 id 为空,说明不用比较是否为相同 id 的岗位
 | 
			
		||||
        if (id == null) {
 | 
			
		||||
            throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
        if (!post.getId().equals(id)) {
 | 
			
		||||
            throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkPostExists(Long id) {
 | 
			
		||||
        if (id == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        PostDO post = postMapper.selectById(id);
 | 
			
		||||
        if (post == null) {
 | 
			
		||||
            throw ServiceExceptionUtil.exception(POST_NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void validPosts(Collection<Long> ids) {
 | 
			
		||||
    public void validatePostList(Collection<Long> ids) {
 | 
			
		||||
        if (CollUtil.isEmpty(ids)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -319,7 +319,7 @@ public class AdminUserServiceImpl implements AdminUserService {
 | 
			
		||||
        // 校验部门处于开启状态
 | 
			
		||||
        deptService.validateDeptList(CollectionUtils.singleton(deptId));
 | 
			
		||||
        // 校验岗位处于开启状态
 | 
			
		||||
        postService.validPosts(postIds);
 | 
			
		||||
        postService.validatePostList(postIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @VisibleForTesting
 | 
			
		||||
 
 | 
			
		||||
@@ -337,7 +337,7 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
        List<Long> ids = singletonList(deptDO.getId());
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> deptService.validateDeptList(ids), DEPT_NOT_ENABLE);
 | 
			
		||||
        assertServiceException(() -> deptService.validateDeptList(ids), DEPT_NOT_ENABLE, deptDO.getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @SafeVarargs
 | 
			
		||||
 
 | 
			
		||||
@@ -1,41 +1,136 @@
 | 
			
		||||
package cn.iocoder.yudao.module.system.service.dept;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.mysql.dept.PostMapper;
 | 
			
		||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.springframework.context.annotation.Import;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
 | 
			
		||||
import static cn.hutool.core.util.RandomUtil.randomEle;
 | 
			
		||||
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.randomLongId;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
 | 
			
		||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
 | 
			
		||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
 | 
			
		||||
import static java.util.Collections.singletonList;
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * {@link PostServiceImpl} 的单元测试类
 | 
			
		||||
 *
 | 
			
		||||
 * @author niudehua
 | 
			
		||||
 */
 | 
			
		||||
@Import(PostServiceImpl.class)
 | 
			
		||||
public class PostServiceTest extends BaseDbUnitTest {
 | 
			
		||||
public class PostServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private PostServiceImpl postService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private PostMapper postMapper;
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testPagePosts() {
 | 
			
		||||
    public void testCreatePost_success() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostCreateReqVO reqVO = randomPojo(PostCreateReqVO.class,
 | 
			
		||||
                o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()));
 | 
			
		||||
        // 调用
 | 
			
		||||
        Long postId = postService.createPost(reqVO);
 | 
			
		||||
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertNotNull(postId);
 | 
			
		||||
        // 校验记录的属性是否正确
 | 
			
		||||
        PostDO post = postMapper.selectById(postId);
 | 
			
		||||
        assertPojoEquals(reqVO, post);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdatePost_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostUpdateReqVO reqVO = randomPojo(PostUpdateReqVO.class, o -> {
 | 
			
		||||
            // 设置更新的 ID
 | 
			
		||||
            o.setId(postDO.getId());
 | 
			
		||||
            o.setStatus(randomEle(CommonStatusEnum.values()).getStatus());
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        postService.updatePost(reqVO);
 | 
			
		||||
        // 校验是否更新正确
 | 
			
		||||
        PostDO post = postMapper.selectById(reqVO.getId());
 | 
			
		||||
        assertPojoEquals(reqVO, post);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testDeletePost_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(postDO);
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = postDO.getId();
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        postService.deletePost(id);
 | 
			
		||||
        assertNull(postMapper.selectById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testValidatePost_notFoundForDelete() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = randomLongId();
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> postService.deletePost(id), POST_NOT_FOUND);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testValidatePost_nameDuplicateForCreate() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostCreateReqVO reqVO = randomPojo(PostCreateReqVO.class,
 | 
			
		||||
            // 模拟 name 重复
 | 
			
		||||
            o -> o.setName(postDO.getName()));
 | 
			
		||||
        assertServiceException(() -> postService.createPost(reqVO), POST_NAME_DUPLICATE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testValidatePost_codeDuplicateForUpdate() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(postDO);
 | 
			
		||||
        // mock 数据:稍后模拟重复它的 code
 | 
			
		||||
        PostDO codePostDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(codePostDO);
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostUpdateReqVO reqVO = randomPojo(PostUpdateReqVO.class, o -> {
 | 
			
		||||
            // 设置更新的 ID
 | 
			
		||||
            o.setId(postDO.getId());
 | 
			
		||||
            // 模拟 code 重复
 | 
			
		||||
            o.setCode(codePostDO.getCode());
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> postService.updatePost(reqVO), POST_CODE_DUPLICATE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGetPostPage() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPojo(PostDO.class, o -> {
 | 
			
		||||
            o.setName("码仔");
 | 
			
		||||
@@ -43,10 +138,9 @@ public class PostServiceTest extends BaseDbUnitTest {
 | 
			
		||||
        });
 | 
			
		||||
        postMapper.insert(postDO);
 | 
			
		||||
        // 测试 name 不匹配
 | 
			
		||||
        postMapper.insert(ObjectUtils.cloneIgnoreId(postDO, o -> o.setName("程序员")));
 | 
			
		||||
        postMapper.insert(cloneIgnoreId(postDO, o -> o.setName("程序员")));
 | 
			
		||||
        // 测试 status 不匹配
 | 
			
		||||
        postMapper.insert(ObjectUtils.cloneIgnoreId(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
			
		||||
 | 
			
		||||
        postMapper.insert(cloneIgnoreId(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostPageReqVO reqVO = new PostPageReqVO();
 | 
			
		||||
        reqVO.setName("码");
 | 
			
		||||
@@ -54,7 +148,6 @@ public class PostServiceTest extends BaseDbUnitTest {
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        PageResult<PostDO> pageResult = postService.getPostPage(reqVO);
 | 
			
		||||
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertEquals(1, pageResult.getTotal());
 | 
			
		||||
        assertEquals(1, pageResult.getList().size());
 | 
			
		||||
@@ -62,7 +155,7 @@ public class PostServiceTest extends BaseDbUnitTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testListPosts() {
 | 
			
		||||
    public void testGetPostList_export() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPojo(PostDO.class, o -> {
 | 
			
		||||
            o.setName("码仔");
 | 
			
		||||
@@ -70,23 +163,41 @@ public class PostServiceTest extends BaseDbUnitTest {
 | 
			
		||||
        });
 | 
			
		||||
        postMapper.insert(postDO);
 | 
			
		||||
        // 测试 name 不匹配
 | 
			
		||||
        postMapper.insert(ObjectUtils.cloneIgnoreId(postDO, o -> o.setName("程序员")));
 | 
			
		||||
        postMapper.insert(cloneIgnoreId(postDO, o -> o.setName("程序员")));
 | 
			
		||||
        // 测试 status 不匹配
 | 
			
		||||
        postMapper.insert(ObjectUtils.cloneIgnoreId(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
			
		||||
        postMapper.insert(cloneIgnoreId(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostExportReqVO reqVO = new PostExportReqVO();
 | 
			
		||||
        reqVO.setName("码");
 | 
			
		||||
        reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        List<PostDO> list = postService.getPosts(reqVO);
 | 
			
		||||
        List<PostDO> list = postService.getPostList(reqVO);
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertEquals(1, list.size());
 | 
			
		||||
        assertPojoEquals(postDO, list.get(0));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testGetPost() {
 | 
			
		||||
    public void testGetPostList() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO01 = randomPojo(PostDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus()));
 | 
			
		||||
        postMapper.insert(postDO01);
 | 
			
		||||
        // 测试 status 不匹配
 | 
			
		||||
        PostDO postDO02 = randomPojo(PostDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()));
 | 
			
		||||
        postMapper.insert(postDO02);
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        List<Long> ids = Arrays.asList(postDO01.getId(), postDO02.getId());
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        List<PostDO> list = postService.getPostList(ids, singletonList(CommonStatusEnum.ENABLE.getStatus()));
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertEquals(1, list.size());
 | 
			
		||||
        assertPojoEquals(postDO01, list.get(0));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGetPost() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO dbPostDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(dbPostDO);
 | 
			
		||||
@@ -100,94 +211,43 @@ public class PostServiceTest extends BaseDbUnitTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testCreatePost_success() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostCreateReqVO reqVO = randomPojo(PostCreateReqVO.class,
 | 
			
		||||
            o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()));
 | 
			
		||||
        // 调用
 | 
			
		||||
        Long postId = postService.createPost(reqVO);
 | 
			
		||||
        // 断言
 | 
			
		||||
        assertNotNull(postId);
 | 
			
		||||
        // 校验记录的属性是否正确
 | 
			
		||||
        PostDO post = postMapper.selectById(postId);
 | 
			
		||||
        assertPojoEquals(reqVO, post);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testUpdatePost_success() {
 | 
			
		||||
    public void testValidatePostList_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostUpdateReqVO reqVO = randomPojo(PostUpdateReqVO.class,
 | 
			
		||||
            o -> {
 | 
			
		||||
                // 设置更新的 ID
 | 
			
		||||
                o.setId(postDO.getId());
 | 
			
		||||
                o.setStatus(randomEle(CommonStatusEnum.values()).getStatus());
 | 
			
		||||
            });
 | 
			
		||||
        // 调用
 | 
			
		||||
        postService.updatePost(reqVO);
 | 
			
		||||
        // 校验是否更新正确
 | 
			
		||||
        PostDO post = postMapper.selectById(reqVO.getId());// 获取最新的
 | 
			
		||||
        assertPojoEquals(reqVO, post);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testDeletePost_success() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        PostDO postDO = randomPostDO().setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
        postMapper.insert(postDO);
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = postDO.getId();
 | 
			
		||||
        // 调用
 | 
			
		||||
        postService.deletePost(id);
 | 
			
		||||
        assertNull(postMapper.selectById(id));
 | 
			
		||||
        List<Long> ids = singletonList(postDO.getId());
 | 
			
		||||
 | 
			
		||||
        // 调用,无需断言
 | 
			
		||||
        postService.validatePostList(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testCheckPost_notFoundForDelete() {
 | 
			
		||||
    public void testValidatePostList_notFound() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        Long id = randomLongId();
 | 
			
		||||
        List<Long> ids = singletonList(randomLongId());
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> postService.deletePost(id), POST_NOT_FOUND);
 | 
			
		||||
        assertServiceException(() -> postService.validatePostList(ids), POST_NOT_FOUND);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testCheckPost_nameDuplicateForCreate() {
 | 
			
		||||
    public void testValidatePostList_notEnable() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostCreateReqVO reqVO = randomPojo(PostCreateReqVO.class,
 | 
			
		||||
            // 模拟 name 重复
 | 
			
		||||
            o -> o.setName(postDO.getName()));
 | 
			
		||||
        assertServiceException(() -> postService.createPost(reqVO), POST_NAME_DUPLICATE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void testCheckPost_codeDuplicateForUpdate() {
 | 
			
		||||
        // mock 数据
 | 
			
		||||
        PostDO postDO = randomPostDO();
 | 
			
		||||
        PostDO postDO = randomPostDO().setStatus(CommonStatusEnum.DISABLE.getStatus());
 | 
			
		||||
        postMapper.insert(postDO);
 | 
			
		||||
        // mock 数据 稍后模拟重复它的 code
 | 
			
		||||
        PostDO codePostDO = randomPostDO();
 | 
			
		||||
        postMapper.insert(codePostDO);
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PostUpdateReqVO reqVO = randomPojo(PostUpdateReqVO.class,
 | 
			
		||||
            o -> {
 | 
			
		||||
                // 设置更新的 ID
 | 
			
		||||
                o.setId(postDO.getId());
 | 
			
		||||
                // 模拟 code 重复
 | 
			
		||||
                o.setCode(codePostDO.getCode());
 | 
			
		||||
            });
 | 
			
		||||
        List<Long> ids = singletonList(postDO.getId());
 | 
			
		||||
 | 
			
		||||
        // 调用, 并断言异常
 | 
			
		||||
        assertServiceException(() -> postService.updatePost(reqVO), POST_CODE_DUPLICATE);
 | 
			
		||||
        assertServiceException(() -> postService.validatePostList(ids), POST_NOT_ENABLE,
 | 
			
		||||
                postDO.getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @SafeVarargs
 | 
			
		||||
    private static PostDO randomPostDO(Consumer<PostDO>... consumers) {
 | 
			
		||||
        Consumer<PostDO> consumer = (o) -> {
 | 
			
		||||
            o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
 | 
			
		||||
            o.setStatus(randomCommonStatus()); // 保证 status 的范围
 | 
			
		||||
        };
 | 
			
		||||
        return randomPojo(PostDO.class, ArrayUtils.append(consumer, consumers));
 | 
			
		||||
    }
 | 
			
		||||
@@ -102,7 +102,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
                    o.setId(postId);
 | 
			
		||||
                    o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
                }));
 | 
			
		||||
        when(postService.getPosts(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
 | 
			
		||||
        when(postService.getPostList(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
 | 
			
		||||
        // mock passwordEncoder 的方法
 | 
			
		||||
        when(passwordEncoder.encode(eq(reqVO.getPassword()))).thenReturn("yudaoyuanma");
 | 
			
		||||
 | 
			
		||||
@@ -160,7 +160,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
                    o.setId(postId);
 | 
			
		||||
                    o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
			
		||||
                }));
 | 
			
		||||
        when(postService.getPosts(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
 | 
			
		||||
        when(postService.getPostList(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        userService.updateUser(reqVO);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user