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 | package cn.iocoder.yudao.module.system.controller.admin.dict; | 1 | package cn.iocoder.yudao.module.system.controller.admin.dict; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| @@ -66,7 +67,8 @@ public class DictDataController { | @@ -66,7 +67,8 @@ public class DictDataController { | ||
| 66 | @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地") | 67 | @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地") |
| 67 | // 无需添加权限认证,因为前端全局都需要 | 68 | // 无需添加权限认证,因为前端全局都需要 |
| 68 | public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() { | 69 | public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() { |
| 69 | - List<DictDataDO> list = dictDataService.getDictDataList(); | 70 | + List<DictDataDO> list = dictDataService.getDictDataList( |
| 71 | + CommonStatusEnum.ENABLE.getStatus(), null); | ||
| 70 | return success(BeanUtils.toBean(list, DictDataSimpleRespVO.class)); | 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 | package cn.iocoder.yudao.module.system.controller.app.dict; | 1 | package cn.iocoder.yudao.module.system.controller.app.dict; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 5 | import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO; | 6 | import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO; |
| @@ -32,7 +33,8 @@ public class AppDictDataController { | @@ -32,7 +33,8 @@ public class AppDictDataController { | ||
| 32 | @Operation(summary = "根据字典类型查询字典数据信息") | 33 | @Operation(summary = "根据字典类型查询字典数据信息") |
| 33 | @Parameter(name = "type", description = "字典类型", required = true, example = "common_status") | 34 | @Parameter(name = "type", description = "字典类型", required = true, example = "common_status") |
| 34 | public CommonResult<List<AppDictDataRespVO>> getDictDataListByType(@RequestParam("type") String type) { | 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 | return success(BeanUtils.toBean(list, AppDictDataRespVO.class)); | 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,10 +40,10 @@ public interface DictDataMapper extends BaseMapperX<DictDataDO> { | ||
| 40 | .orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort))); | 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,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO; |
| 6 | import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; | 6 | import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; |
| 7 | +import org.springframework.lang.Nullable; | ||
| 7 | 8 | ||
| 8 | import java.util.Collection; | 9 | import java.util.Collection; |
| 9 | import java.util.List; | 10 | import java.util.List; |
| @@ -40,9 +41,11 @@ public interface DictDataService { | @@ -40,9 +41,11 @@ public interface DictDataService { | ||
| 40 | /** | 41 | /** |
| 41 | * 获得字典数据列表 | 42 | * 获得字典数据列表 |
| 42 | * | 43 | * |
| 44 | + * @param status 状态 | ||
| 45 | + * @param dictType 字典类型 | ||
| 43 | * @return 字典数据全列表 | 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,14 +56,6 @@ public interface DictDataService { | ||
| 53 | PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO); | 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 | * @param id 字典数据编号 | 61 | * @param id 字典数据编号 |
| @@ -74,7 +69,7 @@ public interface DictDataService { | @@ -74,7 +69,7 @@ public interface DictDataService { | ||
| 74 | * @param dictType 字典类型 | 69 | * @param dictType 字典类型 |
| 75 | * @return 数据数量 | 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,4 +98,5 @@ public interface DictDataService { | ||
| 103 | * @return 字典数据 | 98 | * @return 字典数据 |
| 104 | */ | 99 | */ |
| 105 | DictDataDO parseDictData(String dictType, String label); | 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,8 +46,8 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 46 | private DictDataMapper dictDataMapper; | 46 | private DictDataMapper dictDataMapper; |
| 47 | 47 | ||
| 48 | @Override | 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 | list.sort(COMPARATOR_TYPE_AND_SORT); | 51 | list.sort(COMPARATOR_TYPE_AND_SORT); |
| 52 | return list; | 52 | return list; |
| 53 | } | 53 | } |
| @@ -58,13 +58,6 @@ public class DictDataServiceImpl implements DictDataService { | @@ -58,13 +58,6 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | @Override | 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 | public DictDataDO getDictData(Long id) { | 61 | public DictDataDO getDictData(Long id) { |
| 69 | return dictDataMapper.selectById(id); | 62 | return dictDataMapper.selectById(id); |
| 70 | } | 63 | } |
| @@ -106,7 +99,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -106,7 +99,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 106 | } | 99 | } |
| 107 | 100 | ||
| 108 | @Override | 101 | @Override |
| 109 | - public long countByDictType(String dictType) { | 102 | + public long getDictDataCountByDictType(String dictType) { |
| 110 | return dictDataMapper.selectCountByDictType(dictType); | 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,7 +80,7 @@ public class DictTypeServiceImpl implements DictTypeService { | ||
| 80 | // 校验是否存在 | 80 | // 校验是否存在 |
| 81 | DictTypeDO dictType = validateDictTypeExists(id); | 81 | DictTypeDO dictType = validateDictTypeExists(id); |
| 82 | // 校验是否有字典数据 | 82 | // 校验是否有字典数据 |
| 83 | - if (dictDataService.countByDictType(dictType.getType()) > 0) { | 83 | + if (dictDataService.getDictDataCountByDictType(dictType.getType()) > 0) { |
| 84 | throw exception(DICT_TYPE_HAS_CHILDREN); | 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,10 +50,15 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { | ||
| 50 | DictDataDO dictDataDO03 = randomDictDataDO().setDictType("yunai").setSort(3) | 50 | DictDataDO dictDataDO03 = randomDictDataDO().setDictType("yunai").setSort(3) |
| 51 | .setStatus(CommonStatusEnum.DISABLE.getStatus()); | 51 | .setStatus(CommonStatusEnum.DISABLE.getStatus()); |
| 52 | dictDataMapper.insert(dictDataDO03); | 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 | assertEquals(2, dictDataDOList.size()); | 63 | assertEquals(2, dictDataDOList.size()); |
| 59 | assertPojoEquals(dictDataDO02, dictDataDOList.get(0)); | 64 | assertPojoEquals(dictDataDO02, dictDataDOList.get(0)); |
| @@ -236,7 +241,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { | @@ -236,7 +241,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { | ||
| 236 | } | 241 | } |
| 237 | 242 | ||
| 238 | @Test | 243 | @Test |
| 239 | - public void testCountByDictType() { | 244 | + public void testGetDictDataCountByDictType() { |
| 240 | // mock 数据 | 245 | // mock 数据 |
| 241 | dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); | 246 | dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); |
| 242 | dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou"))); | 247 | dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou"))); |
| @@ -245,7 +250,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { | @@ -245,7 +250,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest { | ||
| 245 | String dictType = "yunai"; | 250 | String dictType = "yunai"; |
| 246 | 251 | ||
| 247 | // 调用 | 252 | // 调用 |
| 248 | - long count = dictDataService.countByDictType(dictType); | 253 | + long count = dictDataService.getDictDataCountByDictType(dictType); |
| 249 | // 校验 | 254 | // 校验 |
| 250 | assertEquals(2L, count); | 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,7 +158,7 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest { | ||
| 158 | // 准备参数 | 158 | // 准备参数 |
| 159 | Long id = dbDictType.getId(); | 159 | Long id = dbDictType.getId(); |
| 160 | // mock 方法 | 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 | assertServiceException(() -> dictTypeService.deleteDictType(id), DICT_TYPE_HAS_CHILDREN); | 164 | assertServiceException(() -> dictTypeService.deleteDictType(id), DICT_TYPE_HAS_CHILDREN); |