Commit dab751dc747aeb530fef4a396d3d65c972bd0c97
1 parent
30fef09e
✅ 增加 dict 模块的单测覆盖率
Showing
8 changed files
with
29 additions
and
31 deletions
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictDataController.java
| 1 | 1 | package cn.iocoder.yudao.module.system.controller.admin.dict; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 5 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -66,7 +67,8 @@ public class DictDataController { |
| 66 | 67 | @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地") |
| 67 | 68 | // 无需添加权限认证,因为前端全局都需要 |
| 68 | 69 | public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() { |
| 69 | - List<DictDataDO> list = dictDataService.getDictDataList(); | |
| 70 | + List<DictDataDO> list = dictDataService.getDictDataList( | |
| 71 | + CommonStatusEnum.ENABLE.getStatus(), null); | |
| 70 | 72 | return success(BeanUtils.toBean(list, DictDataSimpleRespVO.class)); |
| 71 | 73 | } |
| 72 | 74 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/dict/AppDictDataController.java
| 1 | 1 | package cn.iocoder.yudao.module.system.controller.app.dict; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 5 | 6 | import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO; |
| ... | ... | @@ -32,7 +33,8 @@ public class AppDictDataController { |
| 32 | 33 | @Operation(summary = "根据字典类型查询字典数据信息") |
| 33 | 34 | @Parameter(name = "type", description = "字典类型", required = true, example = "common_status") |
| 34 | 35 | public CommonResult<List<AppDictDataRespVO>> getDictDataListByType(@RequestParam("type") String type) { |
| 35 | - List<DictDataDO> list = dictDataService.getEnabledDictDataListByType(type); | |
| 36 | + List<DictDataDO> list = dictDataService.getDictDataList( | |
| 37 | + CommonStatusEnum.ENABLE.getStatus(), type); | |
| 36 | 38 | return success(BeanUtils.toBean(list, AppDictDataRespVO.class)); |
| 37 | 39 | } |
| 38 | 40 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java
| ... | ... | @@ -40,10 +40,10 @@ public interface DictDataMapper extends BaseMapperX<DictDataDO> { |
| 40 | 40 | .orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort))); |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | - default List<DictDataDO> selectListByTypeAndStatus(String dictType, Integer status) { | |
| 44 | - return selectList(new LambdaQueryWrapper<DictDataDO>() | |
| 45 | - .eq(DictDataDO::getDictType, dictType) | |
| 46 | - .eq(DictDataDO::getStatus, status)); | |
| 43 | + default List<DictDataDO> selectListByStatusAndDictType(Integer status, String dictType) { | |
| 44 | + return selectList(new LambdaQueryWrapperX<DictDataDO>() | |
| 45 | + .eqIfPresent(DictDataDO::getStatus, status) | |
| 46 | + .eqIfPresent(DictDataDO::getDictType, dictType)); | |
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataService.java
| ... | ... | @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO; |
| 6 | 6 | import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; |
| 7 | +import org.springframework.lang.Nullable; | |
| 7 | 8 | |
| 8 | 9 | import java.util.Collection; |
| 9 | 10 | import java.util.List; |
| ... | ... | @@ -40,9 +41,11 @@ public interface DictDataService { |
| 40 | 41 | /** |
| 41 | 42 | * 获得字典数据列表 |
| 42 | 43 | * |
| 44 | + * @param status 状态 | |
| 45 | + * @param dictType 字典类型 | |
| 43 | 46 | * @return 字典数据全列表 |
| 44 | 47 | */ |
| 45 | - List<DictDataDO> getDictDataList(); | |
| 48 | + List<DictDataDO> getDictDataList(@Nullable Integer status, @Nullable String dictType); | |
| 46 | 49 | |
| 47 | 50 | /** |
| 48 | 51 | * 获得字典数据分页列表 |
| ... | ... | @@ -53,14 +56,6 @@ public interface DictDataService { |
| 53 | 56 | PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO); |
| 54 | 57 | |
| 55 | 58 | /** |
| 56 | - * 获得字典数据列表 | |
| 57 | - * | |
| 58 | - * @param dictType 字典类型 | |
| 59 | - * @return 字典数据列表 | |
| 60 | - */ | |
| 61 | - List<DictDataDO> getEnabledDictDataListByType(String dictType); | |
| 62 | - | |
| 63 | - /** | |
| 64 | 59 | * 获得字典数据详情 |
| 65 | 60 | * |
| 66 | 61 | * @param id 字典数据编号 |
| ... | ... | @@ -74,7 +69,7 @@ public interface DictDataService { |
| 74 | 69 | * @param dictType 字典类型 |
| 75 | 70 | * @return 数据数量 |
| 76 | 71 | */ |
| 77 | - long countByDictType(String dictType); | |
| 72 | + long getDictDataCountByDictType(String dictType); | |
| 78 | 73 | |
| 79 | 74 | /** |
| 80 | 75 | * 校验字典数据们是否有效。如下情况,视为无效: |
| ... | ... | @@ -103,4 +98,5 @@ public interface DictDataService { |
| 103 | 98 | * @return 字典数据 |
| 104 | 99 | */ |
| 105 | 100 | DictDataDO parseDictData(String dictType, String label); |
| 101 | + | |
| 106 | 102 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java
| ... | ... | @@ -46,8 +46,8 @@ public class DictDataServiceImpl implements DictDataService { |
| 46 | 46 | private DictDataMapper dictDataMapper; |
| 47 | 47 | |
| 48 | 48 | @Override |
| 49 | - public List<DictDataDO> getDictDataList() { | |
| 50 | - List<DictDataDO> list = dictDataMapper.selectList(DictDataDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); | |
| 49 | + public List<DictDataDO> getDictDataList(Integer status, String dictType) { | |
| 50 | + List<DictDataDO> list = dictDataMapper.selectListByStatusAndDictType(status, dictType); | |
| 51 | 51 | list.sort(COMPARATOR_TYPE_AND_SORT); |
| 52 | 52 | return list; |
| 53 | 53 | } |
| ... | ... | @@ -58,13 +58,6 @@ public class DictDataServiceImpl implements DictDataService { |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | 60 | @Override |
| 61 | - public List<DictDataDO> getEnabledDictDataListByType(String dictType) { | |
| 62 | - List<DictDataDO> list = dictDataMapper.selectListByTypeAndStatus(dictType, CommonStatusEnum.ENABLE.getStatus()); | |
| 63 | - list.sort(COMPARATOR_TYPE_AND_SORT); | |
| 64 | - return list; | |
| 65 | - } | |
| 66 | - | |
| 67 | - @Override | |
| 68 | 61 | public DictDataDO getDictData(Long id) { |
| 69 | 62 | return dictDataMapper.selectById(id); |
| 70 | 63 | } |
| ... | ... | @@ -106,7 +99,7 @@ public class DictDataServiceImpl implements DictDataService { |
| 106 | 99 | } |
| 107 | 100 | |
| 108 | 101 | @Override |
| 109 | - public long countByDictType(String dictType) { | |
| 102 | + public long getDictDataCountByDictType(String dictType) { | |
| 110 | 103 | return dictDataMapper.selectCountByDictType(dictType); |
| 111 | 104 | } |
| 112 | 105 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java
| ... | ... | @@ -80,7 +80,7 @@ public class DictTypeServiceImpl implements DictTypeService { |
| 80 | 80 | // 校验是否存在 |
| 81 | 81 | DictTypeDO dictType = validateDictTypeExists(id); |
| 82 | 82 | // 校验是否有字典数据 |
| 83 | - if (dictDataService.countByDictType(dictType.getType()) > 0) { | |
| 83 | + if (dictDataService.getDictDataCountByDictType(dictType.getType()) > 0) { | |
| 84 | 84 | throw exception(DICT_TYPE_HAS_CHILDREN); |
| 85 | 85 | } |
| 86 | 86 | // 删除字典类型 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImplTest.java
| ... | ... | @@ -50,10 +50,15 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { |
| 50 | 50 | DictDataDO dictDataDO03 = randomDictDataDO().setDictType("yunai").setSort(3) |
| 51 | 51 | .setStatus(CommonStatusEnum.DISABLE.getStatus()); |
| 52 | 52 | dictDataMapper.insert(dictDataDO03); |
| 53 | + DictDataDO dictDataDO04 = randomDictDataDO().setDictType("yunai2").setSort(3) | |
| 54 | + .setStatus(CommonStatusEnum.DISABLE.getStatus()); | |
| 55 | + dictDataMapper.insert(dictDataDO04); | |
| 53 | 56 | // 准备参数 |
| 57 | + Integer status = CommonStatusEnum.ENABLE.getStatus(); | |
| 58 | + String dictType = "yunai"; | |
| 54 | 59 | |
| 55 | 60 | // 调用 |
| 56 | - List<DictDataDO> dictDataDOList = dictDataService.getDictDataList(); | |
| 61 | + List<DictDataDO> dictDataDOList = dictDataService.getDictDataList(status, dictType); | |
| 57 | 62 | // 断言 |
| 58 | 63 | assertEquals(2, dictDataDOList.size()); |
| 59 | 64 | assertPojoEquals(dictDataDO02, dictDataDOList.get(0)); |
| ... | ... | @@ -236,7 +241,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { |
| 236 | 241 | } |
| 237 | 242 | |
| 238 | 243 | @Test |
| 239 | - public void testCountByDictType() { | |
| 244 | + public void testGetDictDataCountByDictType() { | |
| 240 | 245 | // mock 数据 |
| 241 | 246 | dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); |
| 242 | 247 | dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou"))); |
| ... | ... | @@ -245,7 +250,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { |
| 245 | 250 | String dictType = "yunai"; |
| 246 | 251 | |
| 247 | 252 | // 调用 |
| 248 | - long count = dictDataService.countByDictType(dictType); | |
| 253 | + long count = dictDataService.getDictDataCountByDictType(dictType); | |
| 249 | 254 | // 校验 |
| 250 | 255 | assertEquals(2L, count); |
| 251 | 256 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImplTest.java
| ... | ... | @@ -158,7 +158,7 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest { |
| 158 | 158 | // 准备参数 |
| 159 | 159 | Long id = dbDictType.getId(); |
| 160 | 160 | // mock 方法 |
| 161 | - when(dictDataService.countByDictType(eq(dbDictType.getType()))).thenReturn(1L); | |
| 161 | + when(dictDataService.getDictDataCountByDictType(eq(dbDictType.getType()))).thenReturn(1L); | |
| 162 | 162 | |
| 163 | 163 | // 调用, 并断言异常 |
| 164 | 164 | assertServiceException(() -> dictTypeService.deleteDictType(id), DICT_TYPE_HAS_CHILDREN); | ... | ... |