Commit 05374216552e0178ebb04f6ce37e49aae42bddf8
1 parent
bef06ef9
完善 DictDataServiceImpl 单元测试
Showing
7 changed files
with
166 additions
and
49 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmTaskAssignRuleServiceImpl.java
| @@ -224,7 +224,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { | @@ -224,7 +224,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { | ||
| 224 | } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER_GROUP.getType())) { | 224 | } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER_GROUP.getType())) { |
| 225 | userGroupService.validUserGroups(options); | 225 | userGroupService.validUserGroups(options); |
| 226 | } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.SCRIPT.getType())) { | 226 | } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.SCRIPT.getType())) { |
| 227 | - dictDataApi.validDictDatas(DictTypeConstants.TASK_ASSIGN_SCRIPT, | 227 | + dictDataApi.validateDictDataList(DictTypeConstants.TASK_ASSIGN_SCRIPT, |
| 228 | CollectionUtils.convertSet(options, String::valueOf)); | 228 | CollectionUtils.convertSet(options, String::valueOf)); |
| 229 | } else { | 229 | } else { |
| 230 | throw new IllegalArgumentException(format("未知的规则类型({})", type)); | 230 | throw new IllegalArgumentException(format("未知的规则类型({})", type)); |
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dict/DictDataApi.java
| @@ -19,7 +19,7 @@ public interface DictDataApi { | @@ -19,7 +19,7 @@ public interface DictDataApi { | ||
| 19 | * @param dictType 字典类型 | 19 | * @param dictType 字典类型 |
| 20 | * @param values 字典数据值的数组 | 20 | * @param values 字典数据值的数组 |
| 21 | */ | 21 | */ |
| 22 | - void validDictDatas(String dictType, Collection<String> values); | 22 | + void validateDictDataList(String dictType, Collection<String> values); |
| 23 | 23 | ||
| 24 | /** | 24 | /** |
| 25 | * 获得指定的字典数据,从缓存中 | 25 | * 获得指定的字典数据,从缓存中 |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dict/DictDataApiImpl.java
| @@ -21,8 +21,8 @@ public class DictDataApiImpl implements DictDataApi { | @@ -21,8 +21,8 @@ public class DictDataApiImpl implements DictDataApi { | ||
| 21 | private DictDataService dictDataService; | 21 | private DictDataService dictDataService; |
| 22 | 22 | ||
| 23 | @Override | 23 | @Override |
| 24 | - public void validDictDatas(String dictType, Collection<String> values) { | ||
| 25 | - dictDataService.validDictDatas(dictType, values); | 24 | + public void validateDictDataList(String dictType, Collection<String> values) { |
| 25 | + dictDataService.validateDictDataList(dictType, values); | ||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | @Override | 28 | @Override |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictDataController.java
| @@ -62,7 +62,7 @@ public class DictDataController { | @@ -62,7 +62,7 @@ public class DictDataController { | ||
| 62 | @ApiOperation(value = "获得全部字典数据列表", notes = "一般用于管理后台缓存字典数据在本地") | 62 | @ApiOperation(value = "获得全部字典数据列表", notes = "一般用于管理后台缓存字典数据在本地") |
| 63 | // 无需添加权限认证,因为前端全局都需要 | 63 | // 无需添加权限认证,因为前端全局都需要 |
| 64 | public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDatas() { | 64 | public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDatas() { |
| 65 | - List<DictDataDO> list = dictDataService.getDictDatas(); | 65 | + List<DictDataDO> list = dictDataService.getDictDataList(); |
| 66 | return success(DictDataConvert.INSTANCE.convertList(list)); | 66 | return success(DictDataConvert.INSTANCE.convertList(list)); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| @@ -86,7 +86,7 @@ public class DictDataController { | @@ -86,7 +86,7 @@ public class DictDataController { | ||
| 86 | @PreAuthorize("@ss.hasPermission('system:dict:export')") | 86 | @PreAuthorize("@ss.hasPermission('system:dict:export')") |
| 87 | @OperateLog(type = EXPORT) | 87 | @OperateLog(type = EXPORT) |
| 88 | public void export(HttpServletResponse response, @Valid DictDataExportReqVO reqVO) throws IOException { | 88 | public void export(HttpServletResponse response, @Valid DictDataExportReqVO reqVO) throws IOException { |
| 89 | - List<DictDataDO> list = dictDataService.getDictDatas(reqVO); | 89 | + List<DictDataDO> list = dictDataService.getDictDataList(reqVO); |
| 90 | List<DictDataExcelVO> data = DictDataConvert.INSTANCE.convertList02(list); | 90 | List<DictDataExcelVO> data = DictDataConvert.INSTANCE.convertList02(list); |
| 91 | // 输出 | 91 | // 输出 |
| 92 | ExcelUtils.write(response, "字典数据.xls", "数据列表", DictDataExcelVO.class, data); | 92 | ExcelUtils.write(response, "字典数据.xls", "数据列表", DictDataExcelVO.class, data); |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataService.java
| @@ -44,7 +44,7 @@ public interface DictDataService { | @@ -44,7 +44,7 @@ public interface DictDataService { | ||
| 44 | * | 44 | * |
| 45 | * @return 字典数据全列表 | 45 | * @return 字典数据全列表 |
| 46 | */ | 46 | */ |
| 47 | - List<DictDataDO> getDictDatas(); | 47 | + List<DictDataDO> getDictDataList(); |
| 48 | 48 | ||
| 49 | /** | 49 | /** |
| 50 | * 获得字典数据分页列表 | 50 | * 获得字典数据分页列表 |
| @@ -60,7 +60,7 @@ public interface DictDataService { | @@ -60,7 +60,7 @@ public interface DictDataService { | ||
| 60 | * @param reqVO 列表请求 | 60 | * @param reqVO 列表请求 |
| 61 | * @return 字典数据列表 | 61 | * @return 字典数据列表 |
| 62 | */ | 62 | */ |
| 63 | - List<DictDataDO> getDictDatas(DictDataExportReqVO reqVO); | 63 | + List<DictDataDO> getDictDataList(DictDataExportReqVO reqVO); |
| 64 | 64 | ||
| 65 | /** | 65 | /** |
| 66 | * 获得字典数据详情 | 66 | * 获得字典数据详情 |
| @@ -86,7 +86,7 @@ public interface DictDataService { | @@ -86,7 +86,7 @@ public interface DictDataService { | ||
| 86 | * @param dictType 字典类型 | 86 | * @param dictType 字典类型 |
| 87 | * @param values 字典数据值的数组 | 87 | * @param values 字典数据值的数组 |
| 88 | */ | 88 | */ |
| 89 | - void validDictDatas(String dictType, Collection<String> values); | 89 | + void validateDictDataList(String dictType, Collection<String> values); |
| 90 | 90 | ||
| 91 | /** | 91 | /** |
| 92 | * 获得指定的字典数据 | 92 | * 获得指定的字典数据 |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java
| @@ -48,7 +48,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -48,7 +48,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 48 | private DictDataMapper dictDataMapper; | 48 | private DictDataMapper dictDataMapper; |
| 49 | 49 | ||
| 50 | @Override | 50 | @Override |
| 51 | - public List<DictDataDO> getDictDatas() { | 51 | + public List<DictDataDO> getDictDataList() { |
| 52 | List<DictDataDO> list = dictDataMapper.selectList(); | 52 | List<DictDataDO> list = dictDataMapper.selectList(); |
| 53 | list.sort(COMPARATOR_TYPE_AND_SORT); | 53 | list.sort(COMPARATOR_TYPE_AND_SORT); |
| 54 | return list; | 54 | return list; |
| @@ -60,7 +60,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -60,7 +60,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | @Override | 62 | @Override |
| 63 | - public List<DictDataDO> getDictDatas(DictDataExportReqVO reqVO) { | 63 | + public List<DictDataDO> getDictDataList(DictDataExportReqVO reqVO) { |
| 64 | List<DictDataDO> list = dictDataMapper.selectList(reqVO); | 64 | List<DictDataDO> list = dictDataMapper.selectList(reqVO); |
| 65 | list.sort(COMPARATOR_TYPE_AND_SORT); | 65 | list.sort(COMPARATOR_TYPE_AND_SORT); |
| 66 | return list; | 66 | return list; |
| @@ -74,7 +74,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -74,7 +74,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 74 | @Override | 74 | @Override |
| 75 | public Long createDictData(DictDataCreateReqVO reqVO) { | 75 | public Long createDictData(DictDataCreateReqVO reqVO) { |
| 76 | // 校验正确性 | 76 | // 校验正确性 |
| 77 | - checkCreateOrUpdate(null, reqVO.getValue(), reqVO.getDictType()); | 77 | + validateDictDataForCreateOrUpdate(null, reqVO.getValue(), reqVO.getDictType()); |
| 78 | 78 | ||
| 79 | // 插入字典类型 | 79 | // 插入字典类型 |
| 80 | DictDataDO dictData = DictDataConvert.INSTANCE.convert(reqVO); | 80 | DictDataDO dictData = DictDataConvert.INSTANCE.convert(reqVO); |
| @@ -85,7 +85,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -85,7 +85,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 85 | @Override | 85 | @Override |
| 86 | public void updateDictData(DictDataUpdateReqVO reqVO) { | 86 | public void updateDictData(DictDataUpdateReqVO reqVO) { |
| 87 | // 校验正确性 | 87 | // 校验正确性 |
| 88 | - checkCreateOrUpdate(reqVO.getId(), reqVO.getValue(), reqVO.getDictType()); | 88 | + validateDictDataForCreateOrUpdate(reqVO.getId(), reqVO.getValue(), reqVO.getDictType()); |
| 89 | 89 | ||
| 90 | // 更新字典类型 | 90 | // 更新字典类型 |
| 91 | DictDataDO updateObj = DictDataConvert.INSTANCE.convert(reqVO); | 91 | DictDataDO updateObj = DictDataConvert.INSTANCE.convert(reqVO); |
| @@ -95,7 +95,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -95,7 +95,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 95 | @Override | 95 | @Override |
| 96 | public void deleteDictData(Long id) { | 96 | public void deleteDictData(Long id) { |
| 97 | // 校验是否存在 | 97 | // 校验是否存在 |
| 98 | - checkDictDataExists(id); | 98 | + validateDictDataExists(id); |
| 99 | 99 | ||
| 100 | // 删除字典数据 | 100 | // 删除字典数据 |
| 101 | dictDataMapper.deleteById(id); | 101 | dictDataMapper.deleteById(id); |
| @@ -106,18 +106,17 @@ public class DictDataServiceImpl implements DictDataService { | @@ -106,18 +106,17 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 106 | return dictDataMapper.selectCountByDictType(dictType); | 106 | return dictDataMapper.selectCountByDictType(dictType); |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | - | ||
| 110 | - private void checkCreateOrUpdate(Long id, String value, String dictType) { | 109 | + private void validateDictDataForCreateOrUpdate(Long id, String value, String dictType) { |
| 111 | // 校验自己存在 | 110 | // 校验自己存在 |
| 112 | - checkDictDataExists(id); | 111 | + validateDictDataExists(id); |
| 113 | // 校验字典类型有效 | 112 | // 校验字典类型有效 |
| 114 | - checkDictTypeValid(dictType); | 113 | + validateDictTypeExists(dictType); |
| 115 | // 校验字典数据的值的唯一性 | 114 | // 校验字典数据的值的唯一性 |
| 116 | - checkDictDataValueUnique(id, dictType, value); | 115 | + validateDictDataValueUnique(id, dictType, value); |
| 117 | } | 116 | } |
| 118 | 117 | ||
| 119 | @VisibleForTesting | 118 | @VisibleForTesting |
| 120 | - public void checkDictDataValueUnique(Long id, String dictType, String value) { | 119 | + public void validateDictDataValueUnique(Long id, String dictType, String value) { |
| 121 | DictDataDO dictData = dictDataMapper.selectByDictTypeAndValue(dictType, value); | 120 | DictDataDO dictData = dictDataMapper.selectByDictTypeAndValue(dictType, value); |
| 122 | if (dictData == null) { | 121 | if (dictData == null) { |
| 123 | return; | 122 | return; |
| @@ -132,7 +131,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -132,7 +131,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 132 | } | 131 | } |
| 133 | 132 | ||
| 134 | @VisibleForTesting | 133 | @VisibleForTesting |
| 135 | - public void checkDictDataExists(Long id) { | 134 | + public void validateDictDataExists(Long id) { |
| 136 | if (id == null) { | 135 | if (id == null) { |
| 137 | return; | 136 | return; |
| 138 | } | 137 | } |
| @@ -143,7 +142,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -143,7 +142,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 143 | } | 142 | } |
| 144 | 143 | ||
| 145 | @VisibleForTesting | 144 | @VisibleForTesting |
| 146 | - public void checkDictTypeValid(String type) { | 145 | + public void validateDictTypeExists(String type) { |
| 147 | DictTypeDO dictType = dictTypeService.getDictType(type); | 146 | DictTypeDO dictType = dictTypeService.getDictType(type); |
| 148 | if (dictType == null) { | 147 | if (dictType == null) { |
| 149 | throw exception(DICT_TYPE_NOT_EXISTS); | 148 | throw exception(DICT_TYPE_NOT_EXISTS); |
| @@ -154,7 +153,7 @@ public class DictDataServiceImpl implements DictDataService { | @@ -154,7 +153,7 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 154 | } | 153 | } |
| 155 | 154 | ||
| 156 | @Override | 155 | @Override |
| 157 | - public void validDictDatas(String dictType, Collection<String> values) { | 156 | + public void validateDictDataList(String dictType, Collection<String> values) { |
| 158 | if (CollUtil.isEmpty(values)) { | 157 | if (CollUtil.isEmpty(values)) { |
| 159 | return; | 158 | return; |
| 160 | } | 159 | } |
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceTest.java renamed to yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImplTest.java
| @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.service.dict; | @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.service.dict; | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 5 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| 6 | -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | ||
| 7 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | 6 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; |
| 9 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| @@ -20,16 +19,18 @@ import javax.annotation.Resource; | @@ -20,16 +19,18 @@ import javax.annotation.Resource; | ||
| 20 | import java.util.List; | 19 | import java.util.List; |
| 21 | import java.util.function.Consumer; | 20 | import java.util.function.Consumer; |
| 22 | 21 | ||
| 22 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | ||
| 23 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 23 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 24 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 24 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 25 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | 25 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; |
| 26 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | 26 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 27 | +import static java.util.Collections.singletonList; | ||
| 27 | import static org.junit.jupiter.api.Assertions.*; | 28 | import static org.junit.jupiter.api.Assertions.*; |
| 28 | import static org.mockito.ArgumentMatchers.eq; | 29 | import static org.mockito.ArgumentMatchers.eq; |
| 29 | import static org.mockito.Mockito.when; | 30 | import static org.mockito.Mockito.when; |
| 30 | 31 | ||
| 31 | @Import(DictDataServiceImpl.class) | 32 | @Import(DictDataServiceImpl.class) |
| 32 | -public class DictDataServiceTest extends BaseDbUnitTest { | 33 | +public class DictDataServiceImplTest extends BaseDbUnitTest { |
| 33 | 34 | ||
| 34 | @Resource | 35 | @Resource |
| 35 | private DictDataServiceImpl dictDataService; | 36 | private DictDataServiceImpl dictDataService; |
| @@ -40,6 +41,23 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -40,6 +41,23 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 40 | private DictTypeService dictTypeService; | 41 | private DictTypeService dictTypeService; |
| 41 | 42 | ||
| 42 | @Test | 43 | @Test |
| 44 | + public void testGetDictDataList() { | ||
| 45 | + // mock 数据 | ||
| 46 | + DictDataDO dictDataDO01 = randomDictDataDO().setDictType("yunai").setSort(2); | ||
| 47 | + dictDataMapper.insert(dictDataDO01); | ||
| 48 | + DictDataDO dictDataDO02 = randomDictDataDO().setDictType("yunai").setSort(1); | ||
| 49 | + dictDataMapper.insert(dictDataDO02); | ||
| 50 | + // 准备参数 | ||
| 51 | + | ||
| 52 | + // 调用 | ||
| 53 | + List<DictDataDO> dictDataDOList = dictDataService.getDictDataList(); | ||
| 54 | + // 断言 | ||
| 55 | + assertEquals(2, dictDataDOList.size()); | ||
| 56 | + assertPojoEquals(dictDataDO02, dictDataDOList.get(0)); | ||
| 57 | + assertPojoEquals(dictDataDO01, dictDataDOList.get(1)); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + @Test | ||
| 43 | public void testGetDictDataPage() { | 61 | public void testGetDictDataPage() { |
| 44 | // mock 数据 | 62 | // mock 数据 |
| 45 | DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到 | 63 | DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到 |
| @@ -49,11 +67,11 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -49,11 +67,11 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 49 | }); | 67 | }); |
| 50 | dictDataMapper.insert(dbDictData); | 68 | dictDataMapper.insert(dbDictData); |
| 51 | // 测试 label 不匹配 | 69 | // 测试 label 不匹配 |
| 52 | - dictDataMapper.insert(ObjectUtils.cloneIgnoreId(dbDictData, o -> o.setLabel("艿"))); | 70 | + dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setLabel("艿"))); |
| 53 | // 测试 dictType 不匹配 | 71 | // 测试 dictType 不匹配 |
| 54 | - dictDataMapper.insert(ObjectUtils.cloneIgnoreId(dbDictData, o -> o.setDictType("nai"))); | 72 | + dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setDictType("nai"))); |
| 55 | // 测试 status 不匹配 | 73 | // 测试 status 不匹配 |
| 56 | - dictDataMapper.insert(ObjectUtils.cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | 74 | + dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); |
| 57 | // 准备参数 | 75 | // 准备参数 |
| 58 | DictDataPageReqVO reqVO = new DictDataPageReqVO(); | 76 | DictDataPageReqVO reqVO = new DictDataPageReqVO(); |
| 59 | reqVO.setLabel("芋"); | 77 | reqVO.setLabel("芋"); |
| @@ -69,7 +87,7 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -69,7 +87,7 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 69 | } | 87 | } |
| 70 | 88 | ||
| 71 | @Test | 89 | @Test |
| 72 | - public void testGetDictDataList() { | 90 | + public void testGetDictDataList_export() { |
| 73 | // mock 数据 | 91 | // mock 数据 |
| 74 | DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到 | 92 | DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到 |
| 75 | o.setLabel("芋艿"); | 93 | o.setLabel("芋艿"); |
| @@ -78,11 +96,11 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -78,11 +96,11 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 78 | }); | 96 | }); |
| 79 | dictDataMapper.insert(dbDictData); | 97 | dictDataMapper.insert(dbDictData); |
| 80 | // 测试 label 不匹配 | 98 | // 测试 label 不匹配 |
| 81 | - dictDataMapper.insert(ObjectUtils.cloneIgnoreId(dbDictData, o -> o.setLabel("艿"))); | 99 | + dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setLabel("艿"))); |
| 82 | // 测试 dictType 不匹配 | 100 | // 测试 dictType 不匹配 |
| 83 | - dictDataMapper.insert(ObjectUtils.cloneIgnoreId(dbDictData, o -> o.setDictType("nai"))); | 101 | + dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setDictType("nai"))); |
| 84 | // 测试 status 不匹配 | 102 | // 测试 status 不匹配 |
| 85 | - dictDataMapper.insert(ObjectUtils.cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | 103 | + dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); |
| 86 | // 准备参数 | 104 | // 准备参数 |
| 87 | DictDataExportReqVO reqVO = new DictDataExportReqVO(); | 105 | DictDataExportReqVO reqVO = new DictDataExportReqVO(); |
| 88 | reqVO.setLabel("芋"); | 106 | reqVO.setLabel("芋"); |
| @@ -90,13 +108,27 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -90,13 +108,27 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 90 | reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | 108 | reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| 91 | 109 | ||
| 92 | // 调用 | 110 | // 调用 |
| 93 | - List<DictDataDO> list = dictDataService.getDictDatas(reqVO); | 111 | + List<DictDataDO> list = dictDataService.getDictDataList(reqVO); |
| 94 | // 断言 | 112 | // 断言 |
| 95 | assertEquals(1, list.size()); | 113 | assertEquals(1, list.size()); |
| 96 | assertPojoEquals(dbDictData, list.get(0)); | 114 | assertPojoEquals(dbDictData, list.get(0)); |
| 97 | } | 115 | } |
| 98 | 116 | ||
| 99 | @Test | 117 | @Test |
| 118 | + public void testGetDictData() { | ||
| 119 | + // mock 数据 | ||
| 120 | + DictDataDO dbDictData = randomDictDataDO(); | ||
| 121 | + dictDataMapper.insert(dbDictData); | ||
| 122 | + // 准备参数 | ||
| 123 | + Long id = dbDictData.getId(); | ||
| 124 | + | ||
| 125 | + // 调用 | ||
| 126 | + DictDataDO dictData = dictDataService.getDictData(id); | ||
| 127 | + // 断言 | ||
| 128 | + assertPojoEquals(dbDictData, dictData); | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + @Test | ||
| 100 | public void testCreateDictData_success() { | 132 | public void testCreateDictData_success() { |
| 101 | // 准备参数 | 133 | // 准备参数 |
| 102 | DictDataCreateReqVO reqVO = randomPojo(DictDataCreateReqVO.class, | 134 | DictDataCreateReqVO reqVO = randomPojo(DictDataCreateReqVO.class, |
| @@ -148,54 +180,54 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -148,54 +180,54 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 148 | } | 180 | } |
| 149 | 181 | ||
| 150 | @Test | 182 | @Test |
| 151 | - public void testCheckDictDataExists_success() { | 183 | + public void testValidateDictDataExists_success() { |
| 152 | // mock 数据 | 184 | // mock 数据 |
| 153 | DictDataDO dbDictData = randomDictDataDO(); | 185 | DictDataDO dbDictData = randomDictDataDO(); |
| 154 | dictDataMapper.insert(dbDictData);// @Sql: 先插入出一条存在的数据 | 186 | dictDataMapper.insert(dbDictData);// @Sql: 先插入出一条存在的数据 |
| 155 | 187 | ||
| 156 | // 调用成功 | 188 | // 调用成功 |
| 157 | - dictDataService.checkDictDataExists(dbDictData.getId()); | 189 | + dictDataService.validateDictDataExists(dbDictData.getId()); |
| 158 | } | 190 | } |
| 159 | 191 | ||
| 160 | @Test | 192 | @Test |
| 161 | - public void testCheckDictDataExists_notExists() { | ||
| 162 | - assertServiceException(() -> dictDataService.checkDictDataExists(randomLongId()), DICT_DATA_NOT_EXISTS); | 193 | + public void testValidateDictDataExists_notExists() { |
| 194 | + assertServiceException(() -> dictDataService.validateDictDataExists(randomLongId()), DICT_DATA_NOT_EXISTS); | ||
| 163 | } | 195 | } |
| 164 | 196 | ||
| 165 | @Test | 197 | @Test |
| 166 | - public void testCheckDictTypeValid_success() { | 198 | + public void testValidateDictTypeExists_success() { |
| 167 | // mock 方法,数据类型被禁用 | 199 | // mock 方法,数据类型被禁用 |
| 168 | String type = randomString(); | 200 | String type = randomString(); |
| 169 | when(dictTypeService.getDictType(eq(type))).thenReturn(randomDictTypeDO(type)); | 201 | when(dictTypeService.getDictType(eq(type))).thenReturn(randomDictTypeDO(type)); |
| 170 | 202 | ||
| 171 | // 调用, 成功 | 203 | // 调用, 成功 |
| 172 | - dictDataService.checkDictTypeValid(type); | 204 | + dictDataService.validateDictTypeExists(type); |
| 173 | } | 205 | } |
| 174 | 206 | ||
| 175 | @Test | 207 | @Test |
| 176 | - public void testCheckDictTypeValid_notExists() { | ||
| 177 | - assertServiceException(() -> dictDataService.checkDictTypeValid(randomString()), DICT_TYPE_NOT_EXISTS); | 208 | + public void testValidateDictTypeExists_notExists() { |
| 209 | + assertServiceException(() -> dictDataService.validateDictTypeExists(randomString()), DICT_TYPE_NOT_EXISTS); | ||
| 178 | } | 210 | } |
| 179 | 211 | ||
| 180 | @Test | 212 | @Test |
| 181 | - public void testCheckDictTypeValid_notEnable() { | 213 | + public void testValidateDictTypeExists_notEnable() { |
| 182 | // mock 方法,数据类型被禁用 | 214 | // mock 方法,数据类型被禁用 |
| 183 | String dictType = randomString(); | 215 | String dictType = randomString(); |
| 184 | when(dictTypeService.getDictType(eq(dictType))).thenReturn( | 216 | when(dictTypeService.getDictType(eq(dictType))).thenReturn( |
| 185 | randomPojo(DictTypeDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | 217 | randomPojo(DictTypeDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); |
| 186 | 218 | ||
| 187 | // 调用, 并断言异常 | 219 | // 调用, 并断言异常 |
| 188 | - assertServiceException(() -> dictDataService.checkDictTypeValid(dictType), DICT_TYPE_NOT_ENABLE); | 220 | + assertServiceException(() -> dictDataService.validateDictTypeExists(dictType), DICT_TYPE_NOT_ENABLE); |
| 189 | } | 221 | } |
| 190 | 222 | ||
| 191 | @Test | 223 | @Test |
| 192 | - public void testCheckDictDataValueUnique_success() { | 224 | + public void testValidateDictDataValueUnique_success() { |
| 193 | // 调用,成功 | 225 | // 调用,成功 |
| 194 | - dictDataService.checkDictDataValueUnique(randomLongId(), randomString(), randomString()); | 226 | + dictDataService.validateDictDataValueUnique(randomLongId(), randomString(), randomString()); |
| 195 | } | 227 | } |
| 196 | 228 | ||
| 197 | @Test | 229 | @Test |
| 198 | - public void testCheckDictDataValueUnique_valueDuplicateForCreate() { | 230 | + public void testValidateDictDataValueUnique_valueDuplicateForCreate() { |
| 199 | // 准备参数 | 231 | // 准备参数 |
| 200 | String dictType = randomString(); | 232 | String dictType = randomString(); |
| 201 | String value = randomString(); | 233 | String value = randomString(); |
| @@ -206,12 +238,12 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -206,12 +238,12 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 206 | })); | 238 | })); |
| 207 | 239 | ||
| 208 | // 调用,校验异常 | 240 | // 调用,校验异常 |
| 209 | - assertServiceException(() -> dictDataService.checkDictDataValueUnique(null, dictType, value), | 241 | + assertServiceException(() -> dictDataService.validateDictDataValueUnique(null, dictType, value), |
| 210 | DICT_DATA_VALUE_DUPLICATE); | 242 | DICT_DATA_VALUE_DUPLICATE); |
| 211 | } | 243 | } |
| 212 | 244 | ||
| 213 | @Test | 245 | @Test |
| 214 | - public void testCheckDictDataValueUnique_valueDuplicateForUpdate() { | 246 | + public void testValidateDictDataValueUnique_valueDuplicateForUpdate() { |
| 215 | // 准备参数 | 247 | // 准备参数 |
| 216 | Long id = randomLongId(); | 248 | Long id = randomLongId(); |
| 217 | String dictType = randomString(); | 249 | String dictType = randomString(); |
| @@ -223,10 +255,96 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -223,10 +255,96 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 223 | })); | 255 | })); |
| 224 | 256 | ||
| 225 | // 调用,校验异常 | 257 | // 调用,校验异常 |
| 226 | - assertServiceException(() -> dictDataService.checkDictDataValueUnique(id, dictType, value), | 258 | + assertServiceException(() -> dictDataService.validateDictDataValueUnique(id, dictType, value), |
| 227 | DICT_DATA_VALUE_DUPLICATE); | 259 | DICT_DATA_VALUE_DUPLICATE); |
| 228 | } | 260 | } |
| 229 | 261 | ||
| 262 | + @Test | ||
| 263 | + public void testCountByDictType() { | ||
| 264 | + // mock 数据 | ||
| 265 | + dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); | ||
| 266 | + dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("tudou"))); | ||
| 267 | + dictDataMapper.insert(randomDictDataDO(o -> o.setDictType("yunai"))); | ||
| 268 | + // 准备参数 | ||
| 269 | + String dictType = "yunai"; | ||
| 270 | + | ||
| 271 | + // 调用 | ||
| 272 | + long count = dictDataService.countByDictType(dictType); | ||
| 273 | + // 校验 | ||
| 274 | + assertEquals(2L, count); | ||
| 275 | + } | ||
| 276 | + | ||
| 277 | + @Test | ||
| 278 | + public void testValidateDictDataList_success() { | ||
| 279 | + // mock 数据 | ||
| 280 | + DictDataDO dictDataDO = randomDictDataDO().setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||
| 281 | + dictDataMapper.insert(dictDataDO); | ||
| 282 | + // 准备参数 | ||
| 283 | + String dictType = dictDataDO.getDictType(); | ||
| 284 | + List<String> values = singletonList(dictDataDO.getValue()); | ||
| 285 | + | ||
| 286 | + // 调用,无需断言 | ||
| 287 | + dictDataService.validateDictDataList(dictType, values); | ||
| 288 | + } | ||
| 289 | + | ||
| 290 | + @Test | ||
| 291 | + public void testValidateDictDataList_notFound() { | ||
| 292 | + // 准备参数 | ||
| 293 | + String dictType = randomString(); | ||
| 294 | + List<String> values = singletonList(randomString()); | ||
| 295 | + | ||
| 296 | + // 调用, 并断言异常 | ||
| 297 | + assertServiceException(() -> dictDataService.validateDictDataList(dictType, values), DICT_DATA_NOT_EXISTS); | ||
| 298 | + } | ||
| 299 | + | ||
| 300 | + @Test | ||
| 301 | + public void testValidateDictDataList_notEnable() { | ||
| 302 | + // mock 数据 | ||
| 303 | + DictDataDO dictDataDO = randomDictDataDO().setStatus(CommonStatusEnum.DISABLE.getStatus()); | ||
| 304 | + dictDataMapper.insert(dictDataDO); | ||
| 305 | + // 准备参数 | ||
| 306 | + String dictType = dictDataDO.getDictType(); | ||
| 307 | + List<String> values = singletonList(dictDataDO.getValue()); | ||
| 308 | + | ||
| 309 | + // 调用, 并断言异常 | ||
| 310 | + assertServiceException(() -> dictDataService.validateDictDataList(dictType, values), | ||
| 311 | + DICT_DATA_NOT_ENABLE, dictDataDO.getLabel()); | ||
| 312 | + } | ||
| 313 | + | ||
| 314 | + @Test | ||
| 315 | + public void testGetDictData_dictType() { | ||
| 316 | + // mock 数据 | ||
| 317 | + DictDataDO dictDataDO = randomDictDataDO().setDictType("yunai").setValue("1"); | ||
| 318 | + dictDataMapper.insert(dictDataDO); | ||
| 319 | + DictDataDO dictDataDO02 = randomDictDataDO().setDictType("yunai").setValue("2"); | ||
| 320 | + dictDataMapper.insert(dictDataDO02); | ||
| 321 | + // 准备参数 | ||
| 322 | + String dictType = "yunai"; | ||
| 323 | + String value = "1"; | ||
| 324 | + | ||
| 325 | + // 调用 | ||
| 326 | + DictDataDO dbDictData = dictDataService.getDictData(dictType, value); | ||
| 327 | + // 断言 | ||
| 328 | + assertEquals(dictDataDO, dbDictData); | ||
| 329 | + } | ||
| 330 | + | ||
| 331 | + @Test | ||
| 332 | + public void testParseDictData() { | ||
| 333 | + // mock 数据 | ||
| 334 | + DictDataDO dictDataDO = randomDictDataDO().setDictType("yunai").setLabel("1"); | ||
| 335 | + dictDataMapper.insert(dictDataDO); | ||
| 336 | + DictDataDO dictDataDO02 = randomDictDataDO().setDictType("yunai").setLabel("2"); | ||
| 337 | + dictDataMapper.insert(dictDataDO02); | ||
| 338 | + // 准备参数 | ||
| 339 | + String dictType = "yunai"; | ||
| 340 | + String label = "1"; | ||
| 341 | + | ||
| 342 | + // 调用 | ||
| 343 | + DictDataDO dbDictData = dictDataService.parseDictData(dictType, label); | ||
| 344 | + // 断言 | ||
| 345 | + assertEquals(dictDataDO, dbDictData); | ||
| 346 | + } | ||
| 347 | + | ||
| 230 | // ========== 随机对象 ========== | 348 | // ========== 随机对象 ========== |
| 231 | 349 | ||
| 232 | @SafeVarargs | 350 | @SafeVarargs |