Commit dab751dc747aeb530fef4a396d3d65c972bd0c97

Authored by YunaiV
1 parent 30fef09e

✅ 增加 dict 模块的单测覆盖率

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&lt;DictDataDO&gt; { @@ -40,10 +40,10 @@ public interface DictDataMapper extends BaseMapperX&lt;DictDataDO&gt; {
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);