增加 dict 模块的单测覆盖率

This commit is contained in:
YunaiV 2023-12-03 21:15:06 +08:00
parent 30fef09eee
commit dab751dc74
8 changed files with 29 additions and 31 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.controller.admin.dict; package cn.iocoder.yudao.module.system.controller.admin.dict;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -66,7 +67,8 @@ public class DictDataController {
@Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地") @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地")
// 无需添加权限认证因为前端全局都需要 // 无需添加权限认证因为前端全局都需要
public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() { public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() {
List<DictDataDO> list = dictDataService.getDictDataList(); List<DictDataDO> list = dictDataService.getDictDataList(
CommonStatusEnum.ENABLE.getStatus(), null);
return success(BeanUtils.toBean(list, DictDataSimpleRespVO.class)); return success(BeanUtils.toBean(list, DictDataSimpleRespVO.class));
} }

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.controller.app.dict; package cn.iocoder.yudao.module.system.controller.app.dict;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO; import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO;
@ -32,7 +33,8 @@ public class AppDictDataController {
@Operation(summary = "根据字典类型查询字典数据信息") @Operation(summary = "根据字典类型查询字典数据信息")
@Parameter(name = "type", description = "字典类型", required = true, example = "common_status") @Parameter(name = "type", description = "字典类型", required = true, example = "common_status")
public CommonResult<List<AppDictDataRespVO>> getDictDataListByType(@RequestParam("type") String type) { public CommonResult<List<AppDictDataRespVO>> getDictDataListByType(@RequestParam("type") String type) {
List<DictDataDO> list = dictDataService.getEnabledDictDataListByType(type); List<DictDataDO> list = dictDataService.getDictDataList(
CommonStatusEnum.ENABLE.getStatus(), type);
return success(BeanUtils.toBean(list, AppDictDataRespVO.class)); return success(BeanUtils.toBean(list, AppDictDataRespVO.class));
} }

View File

@ -40,10 +40,10 @@ public interface DictDataMapper extends BaseMapperX<DictDataDO> {
.orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort))); .orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort)));
} }
default List<DictDataDO> selectListByTypeAndStatus(String dictType, Integer status) { default List<DictDataDO> selectListByStatusAndDictType(Integer status, String dictType) {
return selectList(new LambdaQueryWrapper<DictDataDO>() return selectList(new LambdaQueryWrapperX<DictDataDO>()
.eq(DictDataDO::getDictType, dictType) .eqIfPresent(DictDataDO::getStatus, status)
.eq(DictDataDO::getStatus, status)); .eqIfPresent(DictDataDO::getDictType, dictType));
} }
} }

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
import org.springframework.lang.Nullable;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -40,9 +41,11 @@ public interface DictDataService {
/** /**
* 获得字典数据列表 * 获得字典数据列表
* *
* @param status 状态
* @param dictType 字典类型
* @return 字典数据全列表 * @return 字典数据全列表
*/ */
List<DictDataDO> getDictDataList(); List<DictDataDO> getDictDataList(@Nullable Integer status, @Nullable String dictType);
/** /**
* 获得字典数据分页列表 * 获得字典数据分页列表
@ -52,14 +55,6 @@ public interface DictDataService {
*/ */
PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO); PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO);
/**
* 获得字典数据列表
*
* @param dictType 字典类型
* @return 字典数据列表
*/
List<DictDataDO> getEnabledDictDataListByType(String dictType);
/** /**
* 获得字典数据详情 * 获得字典数据详情
* *
@ -74,7 +69,7 @@ public interface DictDataService {
* @param dictType 字典类型 * @param dictType 字典类型
* @return 数据数量 * @return 数据数量
*/ */
long countByDictType(String dictType); long getDictDataCountByDictType(String dictType);
/** /**
* 校验字典数据们是否有效如下情况视为无效 * 校验字典数据们是否有效如下情况视为无效
@ -103,4 +98,5 @@ public interface DictDataService {
* @return 字典数据 * @return 字典数据
*/ */
DictDataDO parseDictData(String dictType, String label); DictDataDO parseDictData(String dictType, String label);
} }

View File

@ -46,8 +46,8 @@ public class DictDataServiceImpl implements DictDataService {
private DictDataMapper dictDataMapper; private DictDataMapper dictDataMapper;
@Override @Override
public List<DictDataDO> getDictDataList() { public List<DictDataDO> getDictDataList(Integer status, String dictType) {
List<DictDataDO> list = dictDataMapper.selectList(DictDataDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); List<DictDataDO> list = dictDataMapper.selectListByStatusAndDictType(status, dictType);
list.sort(COMPARATOR_TYPE_AND_SORT); list.sort(COMPARATOR_TYPE_AND_SORT);
return list; return list;
} }
@ -57,13 +57,6 @@ public class DictDataServiceImpl implements DictDataService {
return dictDataMapper.selectPage(pageReqVO); return dictDataMapper.selectPage(pageReqVO);
} }
@Override
public List<DictDataDO> getEnabledDictDataListByType(String dictType) {
List<DictDataDO> list = dictDataMapper.selectListByTypeAndStatus(dictType, CommonStatusEnum.ENABLE.getStatus());
list.sort(COMPARATOR_TYPE_AND_SORT);
return list;
}
@Override @Override
public DictDataDO getDictData(Long id) { public DictDataDO getDictData(Long id) {
return dictDataMapper.selectById(id); return dictDataMapper.selectById(id);
@ -106,7 +99,7 @@ public class DictDataServiceImpl implements DictDataService {
} }
@Override @Override
public long countByDictType(String dictType) { public long getDictDataCountByDictType(String dictType) {
return dictDataMapper.selectCountByDictType(dictType); return dictDataMapper.selectCountByDictType(dictType);
} }

View File

@ -80,7 +80,7 @@ public class DictTypeServiceImpl implements DictTypeService {
// 校验是否存在 // 校验是否存在
DictTypeDO dictType = validateDictTypeExists(id); DictTypeDO dictType = validateDictTypeExists(id);
// 校验是否有字典数据 // 校验是否有字典数据
if (dictDataService.countByDictType(dictType.getType()) > 0) { if (dictDataService.getDictDataCountByDictType(dictType.getType()) > 0) {
throw exception(DICT_TYPE_HAS_CHILDREN); throw exception(DICT_TYPE_HAS_CHILDREN);
} }
// 删除字典类型 // 删除字典类型

View File

@ -50,10 +50,15 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
DictDataDO dictDataDO03 = randomDictDataDO().setDictType("yunai").setSort(3) DictDataDO dictDataDO03 = randomDictDataDO().setDictType("yunai").setSort(3)
.setStatus(CommonStatusEnum.DISABLE.getStatus()); .setStatus(CommonStatusEnum.DISABLE.getStatus());
dictDataMapper.insert(dictDataDO03); dictDataMapper.insert(dictDataDO03);
DictDataDO dictDataDO04 = randomDictDataDO().setDictType("yunai2").setSort(3)
.setStatus(CommonStatusEnum.DISABLE.getStatus());
dictDataMapper.insert(dictDataDO04);
// 准备参数 // 准备参数
Integer status = CommonStatusEnum.ENABLE.getStatus();
String dictType = "yunai";
// 调用 // 调用
List<DictDataDO> dictDataDOList = dictDataService.getDictDataList(); List<DictDataDO> dictDataDOList = dictDataService.getDictDataList(status, dictType);
// 断言 // 断言
assertEquals(2, dictDataDOList.size()); assertEquals(2, dictDataDOList.size());
assertPojoEquals(dictDataDO02, dictDataDOList.get(0)); assertPojoEquals(dictDataDO02, dictDataDOList.get(0));
@ -236,7 +241,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
} }
@Test @Test
public void testCountByDictType() { public void testGetDictDataCountByDictType() {
// mock 数据 // mock 数据
dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai")));
dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou"))); dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou")));
@ -245,7 +250,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
String dictType = "yunai"; String dictType = "yunai";
// 调用 // 调用
long count = dictDataService.countByDictType(dictType); long count = dictDataService.getDictDataCountByDictType(dictType);
// 校验 // 校验
assertEquals(2L, count); assertEquals(2L, count);
} }

View File

@ -158,7 +158,7 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest {
// 准备参数 // 准备参数
Long id = dbDictType.getId(); Long id = dbDictType.getId();
// mock 方法 // mock 方法
when(dictDataService.countByDictType(eq(dbDictType.getType()))).thenReturn(1L); when(dictDataService.getDictDataCountByDictType(eq(dbDictType.getType()))).thenReturn(1L);
// 调用, 并断言异常 // 调用, 并断言异常
assertServiceException(() -> dictTypeService.deleteDictType(id), DICT_TYPE_HAS_CHILDREN); assertServiceException(() -> dictTypeService.deleteDictType(id), DICT_TYPE_HAS_CHILDREN);