mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 13:42:07 +08:00
1、WithMockLoginUserExtension补充isSuperAdmin的缺省false;2、dept service移除真实db,走纯mock;
This commit is contained in:
+1
-1
@@ -215,7 +215,7 @@ public class DeptServiceImpl implements DeptService {
|
|||||||
if (CollUtil.isEmpty(ids)) {
|
if (CollUtil.isEmpty(ids)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
return deptMapper.selectBatchIds(ids);
|
return deptMapper.selectByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
@@ -32,6 +32,7 @@ public class WithMockLoginUserExtension implements BeforeEachCallback, AfterEach
|
|||||||
loginUser.setOrganId(ann.organId());
|
loginUser.setOrganId(ann.organId());
|
||||||
loginUser.setDeptId(ann.deptId());
|
loginUser.setDeptId(ann.deptId());
|
||||||
loginUser.setNickname(ann.username());
|
loginUser.setNickname(ann.username());
|
||||||
|
loginUser.setIsSupAdmin(ann.isSuperAdmin());
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+134
-134
@@ -2,12 +2,12 @@ package com.cf.imes.module.system.service.dept;
|
|||||||
|
|
||||||
import com.cf.imes.framework.common.enums.CommonStatusEnum;
|
import com.cf.imes.framework.common.enums.CommonStatusEnum;
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
import com.cf.imes.framework.common.exception.ServiceException;
|
||||||
import com.cf.imes.framework.common.util.object.ObjectUtils;
|
|
||||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||||
import com.cf.imes.framework.security.core.LoginUser;
|
import com.cf.imes.framework.security.core.LoginUser;
|
||||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import com.cf.imes.framework.security.test.WithMockLoginUser;
|
import com.cf.imes.framework.security.test.WithMockLoginUser;
|
||||||
import com.cf.imes.framework.test.core.ut.BaseDbAndRedisUnitTest;
|
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
|
||||||
|
import com.cf.imes.module.system.common.WithMockLoginUserExtension;
|
||||||
import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
|
import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
|
||||||
import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.dept.DeptDO;
|
import com.cf.imes.module.system.dal.dataobject.dept.DeptDO;
|
||||||
@@ -17,10 +17,9 @@ import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
|||||||
import com.cf.imes.module.system.service.user.AdminUserService;
|
import com.cf.imes.module.system.service.user.AdminUserService;
|
||||||
import com.cf.imes.module.system.util.redis.SystemRedisUtils;
|
import com.cf.imes.module.system.util.redis.SystemRedisUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
import jakarta.annotation.Resource;
|
import org.mockito.Mock;
|
||||||
import org.springframework.test.context.bean.override.mockito.MockitoBean;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -32,7 +31,15 @@ import static com.cf.imes.framework.test.core.util.AssertUtils.assertServiceExce
|
|||||||
import static com.cf.imes.framework.test.core.util.RandomUtils.*;
|
import static com.cf.imes.framework.test.core.util.RandomUtils.*;
|
||||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
|
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyCollection;
|
||||||
import static org.mockito.ArgumentMatchers.anyList;
|
import static org.mockito.ArgumentMatchers.anyList;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyLong;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.ArgumentMatchers.argThat;
|
||||||
|
import static org.mockito.Mockito.doAnswer;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,18 +47,19 @@ import static org.mockito.Mockito.when;
|
|||||||
*
|
*
|
||||||
* @author niudehua
|
* @author niudehua
|
||||||
*/
|
*/
|
||||||
@Import(DeptServiceImpl.class)
|
@ExtendWith(WithMockLoginUserExtension.class)
|
||||||
public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
class DeptServiceImplTest extends BaseMockitoUnitTest {
|
||||||
|
|
||||||
@Resource
|
@InjectMocks
|
||||||
private DeptServiceImpl deptService;
|
private DeptServiceImpl deptService;
|
||||||
@Resource
|
|
||||||
|
@Mock
|
||||||
private DeptMapper deptMapper;
|
private DeptMapper deptMapper;
|
||||||
|
|
||||||
@MockitoBean
|
@Mock
|
||||||
private AdminUserService userService;
|
private AdminUserService userService;
|
||||||
|
|
||||||
@MockitoBean
|
@Mock
|
||||||
private SystemRedisUtils systemRedisUtils;
|
private SystemRedisUtils systemRedisUtils;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -63,55 +71,63 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
o.setStatus(randomCommonStatus());
|
o.setStatus(randomCommonStatus());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 模拟 Mapper 插入时生成 ID
|
||||||
|
doAnswer(invocation -> {
|
||||||
|
DeptDO deptDO = invocation.getArgument(0);
|
||||||
|
deptDO.setId(100L); // 模拟自增主键
|
||||||
|
return null;
|
||||||
|
}).when(deptMapper).insert(any(DeptDO.class));
|
||||||
// 调用
|
// 调用
|
||||||
Long deptId = deptService.createDept(reqVO);
|
Long deptId = deptService.createDept(reqVO);
|
||||||
// 断言
|
// 断言
|
||||||
assertNotNull(deptId);
|
assertEquals(100L, deptId);
|
||||||
// 校验记录的属性是否正确
|
verify(deptMapper).insert(argThat((DeptDO dept) ->
|
||||||
DeptDO deptDO = deptMapper.selectById(deptId);
|
dept.getParentId().equals(reqVO.getParentId())
|
||||||
assertPojoEquals(reqVO, deptDO, "id");
|
&& dept.getStatus().equals(reqVO.getStatus())
|
||||||
|
&& dept.getOrganId().equals(reqVO.getOrganId())
|
||||||
|
&& dept.getName().equals(reqVO.getName())
|
||||||
|
&& dept.getPhone().equals(reqVO.getPhone())
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithMockLoginUser
|
@WithMockLoginUser
|
||||||
void testUpdateDept_enable() {
|
void testUpdateDept_enable() {
|
||||||
// mock 数据
|
Long deptId = 100L;
|
||||||
DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(randomCommonStatus()));
|
// exist
|
||||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
when(deptMapper.selectById(deptId)).thenReturn(new DeptDO());
|
||||||
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
||||||
// 设置更新的 ID
|
o.setId(deptId);
|
||||||
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
||||||
o.setId(dbDeptDO.getId());
|
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
deptService.updateDept(reqVO);
|
deptService.updateDept(reqVO);
|
||||||
// 校验是否更新正确
|
// 校验是否更新
|
||||||
DeptDO deptDO = deptMapper.selectById(reqVO.getId()); // 获取最新的
|
verify(deptMapper, times(1)).updateById(any(DeptDO.class));
|
||||||
assertPojoEquals(reqVO, deptDO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithMockLoginUser
|
@WithMockLoginUser
|
||||||
void testUpdateDept_disable() {
|
void testUpdateDept_disable() {
|
||||||
// mock 数据
|
Long deptId = 100L;
|
||||||
DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(randomCommonStatus()));
|
// exist
|
||||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
when(deptMapper.selectById(deptId)).thenReturn(new DeptDO());
|
||||||
// 准备参数
|
// 准备参数
|
||||||
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
||||||
// 设置更新的 ID
|
o.setId(deptId);
|
||||||
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
||||||
o.setId(dbDeptDO.getId());
|
|
||||||
o.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
o.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
});
|
});
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
deptService.updateDept(reqVO);
|
deptService.updateDept(reqVO);
|
||||||
// 校验是否更新正确
|
// 校验是否更新
|
||||||
DeptDO deptDO = deptMapper.selectById(reqVO.getId()); // 获取最新的
|
verify(deptMapper, times(1)).updateById(any(DeptDO.class));
|
||||||
assertPojoEquals(reqVO, deptDO);
|
verify(systemRedisUtils, times(1)).scanAndCompareDeptAndDelToken(deptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -124,8 +140,12 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
o.setId(loginUser.getDeptId());
|
o.setId(loginUser.getDeptId());
|
||||||
o.setParentId(parentDeptDO.getId());
|
o.setParentId(parentDeptDO.getId());
|
||||||
});
|
});
|
||||||
deptMapper.insert(parentDeptDO);
|
|
||||||
deptMapper.insert(dbDeptDO);
|
// exist
|
||||||
|
when(deptMapper.selectById(parentDeptDO.getId())).thenReturn(parentDeptDO);
|
||||||
|
// 轮训子部门
|
||||||
|
when(deptMapper.selectListByParentId(anyCollection())).thenReturn(List.of(dbDeptDO)).thenReturn(Collections.emptyList());
|
||||||
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
DeptSaveReqVO reqVO = randomPojo(DeptSaveReqVO.class, o -> {
|
||||||
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
||||||
@@ -139,16 +159,16 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
@Test
|
@Test
|
||||||
@WithMockLoginUser
|
@WithMockLoginUser
|
||||||
void testDeleteDept_success() {
|
void testDeleteDept_success() {
|
||||||
// mock 数据
|
Long deptId = 100L;
|
||||||
DeptDO dbDeptDO = randomPojo(DeptDO.class);
|
// exist
|
||||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
when(deptMapper.selectById(deptId)).thenReturn(new DeptDO());
|
||||||
// 准备参数
|
|
||||||
Long id = dbDeptDO.getId();
|
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
deptService.deleteDept(id);
|
deptService.deleteDept(deptId);
|
||||||
// 校验数据不存在了
|
// 校验数据不存在了
|
||||||
assertNull(deptMapper.selectById(id));
|
verify(deptMapper, times(1)).deleteById(deptId);
|
||||||
|
verify(userService, times(1)).deleteDeptUsers(deptId);
|
||||||
|
verify(systemRedisUtils, times(1)).scanAndCompareDeptAndDelToken(deptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -157,9 +177,8 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setId(loginUser.getDeptId()));
|
DeptDO dbDeptDO = randomPojo(DeptDO.class, o -> o.setId(loginUser.getDeptId()));
|
||||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
|
||||||
// 准备参数
|
|
||||||
Long id = dbDeptDO.getId();
|
Long id = dbDeptDO.getId();
|
||||||
|
when(deptMapper.selectById(id)).thenReturn(dbDeptDO);
|
||||||
|
|
||||||
assertServiceException(() -> deptService.deleteDept(id),
|
assertServiceException(() -> deptService.deleteDept(id),
|
||||||
DEPT_USER_OPER_NOT_ALLOW);
|
DEPT_USER_OPER_NOT_ALLOW);
|
||||||
@@ -170,9 +189,8 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testDeleteDept_deptUserExists(){
|
void testDeleteDept_deptUserExists(){
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO dbDeptDO = randomPojo(DeptDO.class);
|
DeptDO dbDeptDO = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(dbDeptDO);// @Sql: 先插入出一条存在的数据
|
|
||||||
// 准备参数
|
|
||||||
Long id = dbDeptDO.getId();
|
Long id = dbDeptDO.getId();
|
||||||
|
when(deptMapper.selectById(id)).thenReturn(dbDeptDO);
|
||||||
|
|
||||||
when(userService.getUserListByDeptIds(anyList()))
|
when(userService.getUserListByDeptIds(anyList()))
|
||||||
.thenReturn(Collections.singletonList(new AdminUserDO()));
|
.thenReturn(Collections.singletonList(new AdminUserDO()));
|
||||||
@@ -185,14 +203,11 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testDeleteDept_exitsChildren() {
|
void testDeleteDept_exitsChildren() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO parentDept = randomPojo(DeptDO.class);
|
DeptDO parentDept = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(parentDept);// @Sql: 先插入出一条存在的数据
|
Long id = parentDept.getId();
|
||||||
// 准备参数
|
when(deptMapper.selectById(id)).thenReturn(parentDept);
|
||||||
DeptDO childrenDeptDO = randomPojo(DeptDO.class, o -> {
|
|
||||||
o.setParentId(parentDept.getId());
|
|
||||||
o.setStatus(randomCommonStatus());
|
|
||||||
});
|
|
||||||
// 插入子部门
|
// 插入子部门
|
||||||
deptMapper.insert(childrenDeptDO);
|
when(deptMapper.selectCountByParentId(id)).thenReturn(1L);
|
||||||
|
|
||||||
// 调用, 并断言异常
|
// 调用, 并断言异常
|
||||||
assertServiceException(() -> deptService.deleteDept(parentDept.getId()), DEPT_EXITS_CHILDREN);
|
assertServiceException(() -> deptService.deleteDept(parentDept.getId()), DEPT_EXITS_CHILDREN);
|
||||||
@@ -201,14 +216,14 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
@Test
|
@Test
|
||||||
void testValidateDeptExists_idIsNull() {
|
void testValidateDeptExists_idIsNull() {
|
||||||
// 调用,不抛异常
|
// 调用,不抛异常
|
||||||
deptService.validateDeptExists(null);
|
assertDoesNotThrow(() -> deptService.validateDeptExists(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testValidateDeptExists_exists() {
|
void testValidateDeptExists_exists() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO);
|
when(deptMapper.selectById(deptDO.getId())).thenReturn(deptDO);
|
||||||
|
|
||||||
// 调用,不抛异常
|
// 调用,不抛异常
|
||||||
deptService.validateDeptExists(deptDO.getId());
|
deptService.validateDeptExists(deptDO.getId());
|
||||||
@@ -247,7 +262,7 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testValidateParentDept_parentDisabled() {
|
void testValidateParentDept_parentDisabled() {
|
||||||
DeptDO parentDept = randomPojo(DeptDO.class);
|
DeptDO parentDept = randomPojo(DeptDO.class);
|
||||||
parentDept.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
parentDept.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
deptMapper.insert(parentDept);
|
when(deptMapper.selectById(parentDept.getId())).thenReturn(parentDept);
|
||||||
|
|
||||||
Long id = randomLongId();
|
Long id = randomLongId();
|
||||||
Long parentId = parentDept.getId();
|
Long parentId = parentDept.getId();
|
||||||
@@ -261,11 +276,11 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
// 构造三级部门:grandParent -> parent -> child
|
// 构造三级部门:grandParent -> parent -> child
|
||||||
DeptDO grandParent = randomPojo(DeptDO.class);
|
DeptDO grandParent = randomPojo(DeptDO.class);
|
||||||
grandParent.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
grandParent.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
deptMapper.insert(grandParent);
|
when(deptMapper.selectById(grandParent.getId())).thenReturn(grandParent);
|
||||||
|
|
||||||
DeptDO parent = randomPojo(DeptDO.class, o -> o.setParentId(grandParent.getId()));
|
DeptDO parent = randomPojo(DeptDO.class, o -> o.setParentId(grandParent.getId()));
|
||||||
parent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
parent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(parent);
|
when(deptMapper.selectById(parent.getId())).thenReturn(parent);
|
||||||
|
|
||||||
Long id = randomLongId();
|
Long id = randomLongId();
|
||||||
Long parentId = parent.getId();
|
Long parentId = parent.getId();
|
||||||
@@ -278,11 +293,11 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testValidateParentDept_validHierarchy() {
|
void testValidateParentDept_validHierarchy() {
|
||||||
DeptDO grandParent = randomPojo(DeptDO.class);
|
DeptDO grandParent = randomPojo(DeptDO.class);
|
||||||
grandParent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
grandParent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(grandParent);
|
when(deptMapper.selectById(grandParent.getId())).thenReturn(grandParent);
|
||||||
|
|
||||||
DeptDO parent = randomPojo(DeptDO.class, o -> o.setParentId(grandParent.getId()));
|
DeptDO parent = randomPojo(DeptDO.class, o -> o.setParentId(grandParent.getId()));
|
||||||
parent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
parent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(parent);
|
when(deptMapper.selectById(parent.getId())).thenReturn(parent);
|
||||||
|
|
||||||
Long id = randomLongId();
|
Long id = randomLongId();
|
||||||
Long parentId = parent.getId();
|
Long parentId = parent.getId();
|
||||||
@@ -296,13 +311,13 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
// mock 数据(父节点)
|
// mock 数据(父节点)
|
||||||
DeptDO parentDept = randomPojo(DeptDO.class);
|
DeptDO parentDept = randomPojo(DeptDO.class);
|
||||||
parentDept.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
parentDept.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(parentDept);
|
|
||||||
// mock 数据(子节点)
|
// mock 数据(子节点)
|
||||||
DeptDO childDept = randomPojo(DeptDO.class, o -> {
|
DeptDO childDept = randomPojo(DeptDO.class, o -> {
|
||||||
o.setParentId(parentDept.getId());
|
o.setParentId(parentDept.getId());
|
||||||
});
|
});
|
||||||
childDept.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
childDept.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(childDept);
|
when(deptMapper.selectById(anyLong())).thenReturn(parentDept).thenReturn(childDept).thenReturn(null);
|
||||||
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = parentDept.getId();
|
Long id = parentDept.getId();
|
||||||
@@ -316,7 +331,7 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testValidateNameUnique_duplicate() {
|
void testValidateNameUnique_duplicate() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO);
|
when(deptMapper.selectByParentIdAndName(anyLong(), anyString(), anyLong())).thenReturn(deptDO);
|
||||||
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = randomLongId();
|
Long id = randomLongId();
|
||||||
@@ -333,7 +348,7 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testValidateDeptNameUnique_newDeptDuplicate() {
|
void testValidateDeptNameUnique_newDeptDuplicate() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO);
|
when(deptMapper.selectByParentIdAndName(anyLong(), anyString(), anyLong())).thenReturn(deptDO);
|
||||||
|
|
||||||
// 准备参数:id = null,模拟新增
|
// 准备参数:id = null,模拟新增
|
||||||
Long id = null;
|
Long id = null;
|
||||||
@@ -346,28 +361,11 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
DEPT_NAME_DUPLICATE);
|
DEPT_NAME_DUPLICATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void testValidateDeptNameUnique_updateOtherDeptDuplicate() {
|
|
||||||
// mock 数据
|
|
||||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
|
||||||
deptMapper.insert(deptDO);
|
|
||||||
|
|
||||||
// 准备参数:id 不同,模拟更新到重名部门
|
|
||||||
Long id = randomLongId(); // 与 deptDO 的 id 不同
|
|
||||||
Long parentId = deptDO.getParentId();
|
|
||||||
String name = deptDO.getName();
|
|
||||||
Long organId = deptDO.getOrganId();
|
|
||||||
|
|
||||||
// 调用,并断言异常
|
|
||||||
assertServiceException(() -> deptService.validateDeptNameUnique(id, parentId, name, organId),
|
|
||||||
DEPT_NAME_DUPLICATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testValidateDeptNameUnique_updateSameDept() {
|
void testValidateDeptNameUnique_updateSameDept() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO);
|
when(deptMapper.selectByParentIdAndName(anyLong(), anyString(), anyLong())).thenReturn(deptDO);
|
||||||
|
|
||||||
// 准备参数:id 相同,表示更新自己
|
// 准备参数:id 相同,表示更新自己
|
||||||
Long id = deptDO.getId();
|
Long id = deptDO.getId();
|
||||||
@@ -384,7 +382,7 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testGetDept() {
|
void testGetDept() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO deptDO = randomPojo(DeptDO.class);
|
DeptDO deptDO = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO);
|
when(deptMapper.selectById(deptDO.getId())).thenReturn(deptDO);
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = deptDO.getId();
|
Long id = deptDO.getId();
|
||||||
|
|
||||||
@@ -398,9 +396,9 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testGetDeptList_ids() {
|
void testGetDeptList_ids() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
DeptDO deptDO01 = randomPojo(DeptDO.class);
|
DeptDO deptDO01 = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO01);
|
|
||||||
DeptDO deptDO02 = randomPojo(DeptDO.class);
|
DeptDO deptDO02 = randomPojo(DeptDO.class);
|
||||||
deptMapper.insert(deptDO02);
|
when(deptMapper.selectByIds(anyList())).thenReturn(List.of(deptDO01, deptDO02));
|
||||||
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
List<Long> ids = Arrays.asList(deptDO01.getId(), deptDO02.getId());
|
List<Long> ids = Arrays.asList(deptDO01.getId(), deptDO02.getId());
|
||||||
|
|
||||||
@@ -427,17 +425,15 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
o.setOrganId(organId);
|
o.setOrganId(organId);
|
||||||
});
|
});
|
||||||
deptMapper.insert(dept);
|
|
||||||
// 测试 name 不匹配
|
|
||||||
deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setName("发")));
|
|
||||||
// 测试 status 不匹配
|
|
||||||
deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
DeptListReqVO reqVO = new DeptListReqVO();
|
DeptListReqVO reqVO = new DeptListReqVO();
|
||||||
reqVO.setName("开");
|
reqVO.setName("开");
|
||||||
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
reqVO.setOrganId(organId);
|
reqVO.setOrganId(organId);
|
||||||
|
|
||||||
|
when(deptMapper.selectList(reqVO, organId)).thenReturn(Arrays.asList(dept));
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
List<DeptDO> sysDeptDOS = deptService.getDeptList(reqVO);
|
List<DeptDO> sysDeptDOS = deptService.getDeptList(reqVO);
|
||||||
// 断言
|
// 断言
|
||||||
@@ -455,16 +451,14 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
o.setOrganId(organId);
|
o.setOrganId(organId);
|
||||||
});
|
});
|
||||||
deptMapper.insert(dept);
|
|
||||||
// 测试 name 不匹配
|
|
||||||
deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setName("发")));
|
|
||||||
// 测试 status 不匹配
|
|
||||||
deptMapper.insert(ObjectUtils.cloneIgnoreId(dept, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
DeptListReqVO reqVO = new DeptListReqVO();
|
DeptListReqVO reqVO = new DeptListReqVO();
|
||||||
reqVO.setName("开");
|
reqVO.setName("开");
|
||||||
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
|
||||||
|
when(deptMapper.selectList(reqVO, organId)).thenReturn(Arrays.asList(dept));
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
List<DeptDO> sysDeptDOS = deptService.getDeptList(reqVO);
|
List<DeptDO> sysDeptDOS = deptService.getDeptList(reqVO);
|
||||||
// 断言
|
// 断言
|
||||||
@@ -476,21 +470,19 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testGetChildDeptList() {
|
void testGetChildDeptList() {
|
||||||
// mock 数据(1 级别子节点)
|
// mock 数据(1 级别子节点)
|
||||||
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1"));
|
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1"));
|
||||||
deptMapper.insert(dept1);
|
|
||||||
DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2"));
|
|
||||||
deptMapper.insert(dept2);
|
|
||||||
// mock 数据(2 级子节点)
|
// mock 数据(2 级子节点)
|
||||||
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId()));
|
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId()));
|
||||||
deptMapper.insert(dept1a);
|
|
||||||
DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId()));
|
when(deptMapper.selectListByParentId(any())).thenReturn(Arrays.asList(dept1, dept1a)).thenReturn(null);
|
||||||
deptMapper.insert(dept2a);
|
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = dept1.getParentId();
|
Long id = dept1.getParentId();
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
List<DeptDO> result = deptService.getChildDeptList(id);
|
List<DeptDO> result = deptService.getChildDeptList(id);
|
||||||
// 断言
|
// 断言
|
||||||
assertEquals(result.size(), 2);
|
assertEquals(2, result.size());
|
||||||
assertPojoEquals(dept1, result.get(0));
|
assertPojoEquals(dept1, result.get(0));
|
||||||
assertPojoEquals(dept1a, result.get(1));
|
assertPojoEquals(dept1a, result.get(1));
|
||||||
}
|
}
|
||||||
@@ -500,20 +492,19 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
// mock 数据(1 级别子节点)
|
// mock 数据(1 级别子节点)
|
||||||
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1"));
|
DeptDO dept1 = randomPojo(DeptDO.class, o -> o.setName("1"));
|
||||||
deptMapper.insert(dept1);
|
deptMapper.insert(dept1);
|
||||||
DeptDO dept2 = randomPojo(DeptDO.class, o -> o.setName("2"));
|
|
||||||
deptMapper.insert(dept2);
|
|
||||||
// mock 数据(2 级子节点)
|
// mock 数据(2 级子节点)
|
||||||
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId()));
|
DeptDO dept1a = randomPojo(DeptDO.class, o -> o.setName("1-a").setParentId(dept1.getId()));
|
||||||
deptMapper.insert(dept1a);
|
deptMapper.insert(dept1a);
|
||||||
DeptDO dept2a = randomPojo(DeptDO.class, o -> o.setName("2-a").setParentId(dept2.getId()));
|
|
||||||
deptMapper.insert(dept2a);
|
when(deptMapper.selectListByParentId(any())).thenReturn(Arrays.asList(dept1, dept1a)).thenReturn(null);
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = dept1.getParentId();
|
Long id = dept1.getParentId();
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
Set<Long> result = deptService.getChildDeptIdListFromCache(id);
|
Set<Long> result = deptService.getChildDeptIdListFromCache(id);
|
||||||
// 断言
|
// 断言
|
||||||
assertEquals(result.size(), 2);
|
assertEquals(2, result.size());
|
||||||
assertTrue(result.contains(dept1.getId()));
|
assertTrue(result.contains(dept1.getId()));
|
||||||
assertTrue(result.contains(dept1a.getId()));
|
assertTrue(result.contains(dept1a.getId()));
|
||||||
}
|
}
|
||||||
@@ -528,7 +519,7 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testValidDept_Disabled() {
|
void testValidDept_Disabled() {
|
||||||
// 部门状态不可用
|
// 部门状态不可用
|
||||||
DeptDO disableDbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()));
|
DeptDO disableDbDeptDO = randomPojo(DeptDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()));
|
||||||
deptMapper.insert(disableDbDeptDO);
|
when(deptMapper.selectById(disableDbDeptDO.getId())).thenReturn(disableDbDeptDO);
|
||||||
assertServiceException(() -> deptService.validDept(disableDbDeptDO.getId()), DEPT_DISABLE, disableDbDeptDO.getName());
|
assertServiceException(() -> deptService.validDept(disableDbDeptDO.getId()), DEPT_DISABLE, disableDbDeptDO.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -537,40 +528,38 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
DeptDO enabledbDeptDO = randomPojo(DeptDO.class, o -> {
|
DeptDO enabledbDeptDO = randomPojo(DeptDO.class, o -> {
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
deptMapper.insert(enabledbDeptDO);
|
when(deptMapper.selectById(enabledbDeptDO.getId())).thenReturn(enabledbDeptDO);
|
||||||
assertServiceException(() -> deptService.validDept(enabledbDeptDO.getId()), DEPT_PARENT_NOT_EXITS);
|
assertServiceException(() -> deptService.validDept(enabledbDeptDO.getId()), DEPT_PARENT_NOT_EXITS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testValidDept_ParentDisabled() {
|
void testValidDept_ParentDisabled() {
|
||||||
DeptDO disabledParentDetpDO = randomPojo(DeptDO.class, o -> {
|
DeptDO disabledParentDetpDO = randomPojo(DeptDO.class, o -> {
|
||||||
o.setId(null);
|
|
||||||
o.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
o.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
});
|
});
|
||||||
deptMapper.insert(disabledParentDetpDO);
|
|
||||||
DeptDO enabledbDeptDO = randomPojo(DeptDO.class, o -> {
|
DeptDO enabledbDeptDO = randomPojo(DeptDO.class, o -> {
|
||||||
o.setId(null);
|
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
o.setParentId(disabledParentDetpDO.getId());
|
o.setParentId(disabledParentDetpDO.getId());
|
||||||
});
|
});
|
||||||
deptMapper.insert(enabledbDeptDO);
|
|
||||||
|
when(deptMapper.selectById(any())).thenReturn(enabledbDeptDO).thenReturn(disabledParentDetpDO);
|
||||||
assertServiceException(() -> deptService.validDept(enabledbDeptDO.getId()), DEPT_DISABLE, disabledParentDetpDO.getName());
|
assertServiceException(() -> deptService.validDept(enabledbDeptDO.getId()), DEPT_DISABLE, disabledParentDetpDO.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testValidDept_success() {
|
void testValidDept_success() {
|
||||||
DeptDO disabledParentDetpDO = randomPojo(DeptDO.class, o -> {
|
DeptDO parentDetpDO = randomPojo(DeptDO.class, o -> {
|
||||||
o.setId(null);
|
o.setId(null);
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
o.setParentId(DeptDO.PARENT_ID_ROOT);
|
||||||
});
|
});
|
||||||
deptMapper.insert(disabledParentDetpDO);
|
|
||||||
DeptDO enabledbDeptDO = randomPojo(DeptDO.class, o -> {
|
DeptDO enabledbDeptDO = randomPojo(DeptDO.class, o -> {
|
||||||
o.setId(null);
|
o.setId(null);
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
o.setParentId(disabledParentDetpDO.getId());
|
o.setParentId(parentDetpDO.getId());
|
||||||
});
|
});
|
||||||
deptMapper.insert(enabledbDeptDO);
|
when(deptMapper.selectById(any())).thenReturn(enabledbDeptDO).thenReturn(parentDetpDO);
|
||||||
|
|
||||||
// 调用,无需断言
|
// 调用,无需断言
|
||||||
assertDoesNotThrow(()-> deptService.validDept(enabledbDeptDO.getId()));
|
assertDoesNotThrow(()-> deptService.validDept(enabledbDeptDO.getId()));
|
||||||
@@ -579,7 +568,7 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
@Test
|
@Test
|
||||||
void removeUnowndDept_empty() {
|
void removeUnowndDept_empty() {
|
||||||
List<DeptDO> deptDOS = deptService.removeUnowndDept(Collections.emptyList());
|
List<DeptDO> deptDOS = deptService.removeUnowndDept(Collections.emptyList());
|
||||||
assertEquals(deptDOS.size(), 0);
|
assertEquals(0, deptDOS.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -629,8 +618,10 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
});
|
});
|
||||||
List<DeptDO> deptDOS = List.of(oneParent, one, two, three);
|
List<DeptDO> deptDOS = List.of(oneParent, one, two, three);
|
||||||
// 批量插入
|
// 批量插入
|
||||||
deptMapper.insertBatch(deptDOS);
|
when(deptMapper.selectList(any())).thenReturn(deptDOS);
|
||||||
|
|
||||||
long disableCount = deptDOS.stream().filter(o -> CommonStatusEnum.DISABLE.getStatus().equals(o.getStatus())).count();
|
long disableCount = deptDOS.stream().filter(o -> CommonStatusEnum.DISABLE.getStatus().equals(o.getStatus())).count();
|
||||||
|
|
||||||
Set<Long> allInvalidDeptIds = deptService.getAllInvalidDeptIds(organId);
|
Set<Long> allInvalidDeptIds = deptService.getAllInvalidDeptIds(organId);
|
||||||
|
|
||||||
assertEquals(disableCount, allInvalidDeptIds.size());
|
assertEquals(disableCount, allInvalidDeptIds.size());
|
||||||
@@ -654,10 +645,12 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
DeptDO dept = new DeptDO();
|
DeptDO dept = new DeptDO();
|
||||||
dept.setName("测试部-禁用");
|
dept.setName("测试部-禁用");
|
||||||
dept.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
dept.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
deptMapper.insert(dept);
|
|
||||||
|
Long id = dept.getId();
|
||||||
|
when(deptMapper.selectById(id)).thenReturn(dept);
|
||||||
|
|
||||||
ServiceException ex = assertThrows(ServiceException.class,
|
ServiceException ex = assertThrows(ServiceException.class,
|
||||||
() -> deptService.validUserLoginDept(dept.getId()));
|
() -> deptService.validUserLoginDept(id));
|
||||||
|
|
||||||
assertEquals(ErrorCodeConstants.DEPT_NOT_ALLOWED_LOGIN.getCode(), ex.getCode());
|
assertEquals(ErrorCodeConstants.DEPT_NOT_ALLOWED_LOGIN.getCode(), ex.getCode());
|
||||||
assertTrue(ex.getArgs()[0].toString().contains("测试部-禁用"));
|
assertTrue(ex.getArgs()[0].toString().contains("测试部-禁用"));
|
||||||
@@ -669,28 +662,32 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
DeptDO dept = new DeptDO();
|
DeptDO dept = new DeptDO();
|
||||||
dept.setName("测试部-启用");
|
dept.setName("测试部-启用");
|
||||||
dept.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
dept.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(dept);
|
|
||||||
|
|
||||||
assertDoesNotThrow(() -> deptService.validUserLoginDept(dept.getId()));
|
Long id = dept.getId();
|
||||||
|
when(deptMapper.selectById(id)).thenReturn(dept);
|
||||||
|
|
||||||
|
assertDoesNotThrow(() -> deptService.validUserLoginDept(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testParentDeptDisabled_shouldThrow() {
|
void testParentDeptDisabled_shouldThrow() {
|
||||||
// 上级部门禁用
|
// 上级部门禁用
|
||||||
DeptDO parent = new DeptDO();
|
DeptDO parent = new DeptDO();
|
||||||
|
parent.setId(100L);
|
||||||
parent.setName("上级部门-禁用");
|
parent.setName("上级部门-禁用");
|
||||||
parent.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
parent.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
deptMapper.insert(parent);
|
|
||||||
|
|
||||||
// 子部门启用
|
// 子部门启用
|
||||||
DeptDO child = new DeptDO();
|
DeptDO child = new DeptDO();
|
||||||
child.setName("子部门");
|
child.setName("子部门");
|
||||||
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
child.setParentId(parent.getId());
|
child.setParentId(parent.getId());
|
||||||
deptMapper.insert(child);
|
|
||||||
|
|
||||||
|
when(deptMapper.selectById(any())).thenReturn(child).thenReturn(parent);
|
||||||
|
|
||||||
|
Long childId = child.getId();
|
||||||
ServiceException ex = assertThrows(ServiceException.class,
|
ServiceException ex = assertThrows(ServiceException.class,
|
||||||
() -> deptService.validUserLoginDept(child.getId()));
|
() -> deptService.validUserLoginDept(childId));
|
||||||
|
|
||||||
assertEquals(ErrorCodeConstants.DEPT_DISABLE.getCode(), ex.getCode());
|
assertEquals(ErrorCodeConstants.DEPT_DISABLE.getCode(), ex.getCode());
|
||||||
assertTrue(ex.getArgs()[0].toString().contains("上级部门-禁用"));
|
assertTrue(ex.getArgs()[0].toString().contains("上级部门-禁用"));
|
||||||
@@ -700,16 +697,16 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testParentDeptEnabled_shouldPass() {
|
void testParentDeptEnabled_shouldPass() {
|
||||||
// 上级部门启用
|
// 上级部门启用
|
||||||
DeptDO parent = new DeptDO();
|
DeptDO parent = new DeptDO();
|
||||||
|
parent.setId(100L);
|
||||||
parent.setName("上级部门-启用");
|
parent.setName("上级部门-启用");
|
||||||
parent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
parent.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(parent);
|
|
||||||
|
|
||||||
// 子部门启用
|
// 子部门启用
|
||||||
DeptDO child = new DeptDO();
|
DeptDO child = new DeptDO();
|
||||||
child.setName("子部门");
|
child.setName("子部门");
|
||||||
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
child.setParentId(parent.getId());
|
child.setParentId(parent.getId());
|
||||||
deptMapper.insert(child);
|
when(deptMapper.selectById(any())).thenReturn(child).thenReturn(parent);
|
||||||
|
|
||||||
assertDoesNotThrow(() -> deptService.validUserLoginDept(child.getId()));
|
assertDoesNotThrow(() -> deptService.validUserLoginDept(child.getId()));
|
||||||
}
|
}
|
||||||
@@ -718,26 +715,28 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testMultiLevelParentDeptDisabled_shouldThrow() {
|
void testMultiLevelParentDeptDisabled_shouldThrow() {
|
||||||
// 顶级部门禁用
|
// 顶级部门禁用
|
||||||
DeptDO top = new DeptDO();
|
DeptDO top = new DeptDO();
|
||||||
|
top.setId(100L);
|
||||||
top.setName("顶级部门-禁用");
|
top.setName("顶级部门-禁用");
|
||||||
top.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
top.setStatus(CommonStatusEnum.DISABLE.getStatus());
|
||||||
deptMapper.insert(top);
|
|
||||||
|
|
||||||
// 中间部门启用,指向顶级
|
// 中间部门启用,指向顶级
|
||||||
DeptDO middle = new DeptDO();
|
DeptDO middle = new DeptDO();
|
||||||
|
middle.setId(200L);
|
||||||
middle.setName("中间部门-启用");
|
middle.setName("中间部门-启用");
|
||||||
middle.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
middle.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
middle.setParentId(top.getId());
|
middle.setParentId(top.getId());
|
||||||
deptMapper.insert(middle);
|
|
||||||
|
|
||||||
// 子部门启用,指向中间部门
|
// 子部门启用,指向中间部门
|
||||||
DeptDO child = new DeptDO();
|
DeptDO child = new DeptDO();
|
||||||
child.setName("子部门-启用");
|
child.setName("子部门-启用");
|
||||||
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
child.setParentId(middle.getId());
|
child.setParentId(middle.getId());
|
||||||
deptMapper.insert(child);
|
|
||||||
|
|
||||||
|
when(deptMapper.selectById(any())).thenReturn(child).thenReturn(middle).thenReturn(top);
|
||||||
|
|
||||||
|
Long childId = child.getId();
|
||||||
ServiceException ex = assertThrows(ServiceException.class,
|
ServiceException ex = assertThrows(ServiceException.class,
|
||||||
() -> deptService.validUserLoginDept(child.getId()));
|
() -> deptService.validUserLoginDept(childId));
|
||||||
|
|
||||||
assertEquals(ErrorCodeConstants.DEPT_DISABLE.getCode(), ex.getCode());
|
assertEquals(ErrorCodeConstants.DEPT_DISABLE.getCode(), ex.getCode());
|
||||||
assertTrue(ex.getArgs()[0].toString().contains("顶级部门-禁用"));
|
assertTrue(ex.getArgs()[0].toString().contains("顶级部门-禁用"));
|
||||||
@@ -747,23 +746,24 @@ public class DeptServiceImplTest extends BaseDbAndRedisUnitTest {
|
|||||||
void testMultiLevelAllEnabled_shouldPass() {
|
void testMultiLevelAllEnabled_shouldPass() {
|
||||||
// 顶级部门启用
|
// 顶级部门启用
|
||||||
DeptDO top = new DeptDO();
|
DeptDO top = new DeptDO();
|
||||||
|
top.setId(100L);
|
||||||
top.setName("顶级部门-启用");
|
top.setName("顶级部门-启用");
|
||||||
top.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
top.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
deptMapper.insert(top);
|
|
||||||
|
|
||||||
// 中间部门启用
|
// 中间部门启用
|
||||||
DeptDO middle = new DeptDO();
|
DeptDO middle = new DeptDO();
|
||||||
|
middle.setId(200L);
|
||||||
middle.setName("中间部门-启用");
|
middle.setName("中间部门-启用");
|
||||||
middle.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
middle.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
middle.setParentId(top.getId());
|
middle.setParentId(top.getId());
|
||||||
deptMapper.insert(middle);
|
|
||||||
|
|
||||||
// 子部门启用
|
// 子部门启用
|
||||||
DeptDO child = new DeptDO();
|
DeptDO child = new DeptDO();
|
||||||
child.setName("子部门-启用");
|
child.setName("子部门-启用");
|
||||||
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
child.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
child.setParentId(middle.getId());
|
child.setParentId(middle.getId());
|
||||||
deptMapper.insert(child);
|
|
||||||
|
when(deptMapper.selectById(any())).thenReturn(child).thenReturn(middle).thenReturn(top);
|
||||||
|
|
||||||
// 方法正常执行,不抛异常
|
// 方法正常执行,不抛异常
|
||||||
assertDoesNotThrow(() -> deptService.validUserLoginDept(child.getId()));
|
assertDoesNotThrow(() -> deptService.validUserLoginDept(child.getId()));
|
||||||
|
|||||||
Reference in New Issue
Block a user