Commit 351d08a2c438c094f4bc577c86c68c017276b332

Authored by YunaiV
1 parent 113e34b2

完善 dict data 的本地缓存的测试

src/main/java/cn/iocoder/dashboard/util/object/ObjectUtils.java
... ... @@ -19,4 +19,14 @@ public class ObjectUtils {
19 19 return result;
20 20 }
21 21  
  22 + public static <T extends Comparable<T>> T max(T obj1, T obj2) {
  23 + if (obj1 == null) {
  24 + return obj2;
  25 + }
  26 + if (obj2 == null) {
  27 + return obj1;
  28 + }
  29 + return obj1.compareTo(obj2) > 0 ? obj1 : obj2;
  30 + }
  31 +
22 32 }
... ...
src/test/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataServiceTest.java
... ... @@ -14,13 +14,16 @@ import cn.iocoder.dashboard.modules.system.mq.producer.dict.SysDictDataProducer;
14 14 import cn.iocoder.dashboard.modules.system.service.dict.impl.SysDictDataServiceImpl;
15 15 import cn.iocoder.dashboard.util.collection.ArrayUtils;
16 16 import cn.iocoder.dashboard.util.object.ObjectUtils;
  17 +import com.google.common.collect.ImmutableTable;
17 18 import org.junit.jupiter.api.Test;
18 19 import org.springframework.boot.test.mock.mockito.MockBean;
19 20  
20 21 import javax.annotation.Resource;
  22 +import java.util.Date;
21 23 import java.util.List;
22 24 import java.util.function.Consumer;
23 25  
  26 +import static cn.hutool.core.bean.BeanUtil.getFieldValue;
24 27 import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
25 28 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
26 29 import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException;
... ... @@ -193,6 +196,37 @@ public class SysDictDataServiceTest extends BaseSpringBootUnitTest {
193 196 assertServiceException(() -> dictDataService.updateDictData(reqVO), DICT_DATA_NOT_EXISTS);
194 197 }
195 198  
  199 + /**
  200 + * 测试加载到新的字典数据的情况
  201 + */
  202 + @Test
  203 + @SuppressWarnings("unchecked")
  204 + public void testInitLocalCache() {
  205 + // mock 数据
  206 + SysDictDataDO dictData01 = randomDictDataDO();
  207 + dictDataMapper.insert(dictData01);
  208 + SysDictDataDO dictData02 = randomDictDataDO();
  209 + dictDataMapper.insert(dictData02);
  210 +
  211 + // 调用
  212 + dictDataService.initLocalCache();
  213 + // 断言 labelDictDataCache 缓存
  214 + ImmutableTable<String, String, SysDictDataDO> labelDictDataCache =
  215 + (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataService, "labelDictDataCache");
  216 + assertEquals(2, labelDictDataCache.size());
  217 + assertPojoEquals(dictData01, labelDictDataCache.get(dictData01.getDictType(), dictData01.getLabel()));
  218 + assertPojoEquals(dictData02, labelDictDataCache.get(dictData02.getDictType(), dictData02.getLabel()));
  219 + // 断言 valueDictDataCache 缓存
  220 + ImmutableTable<String, String, SysDictDataDO> valueDictDataCache =
  221 + (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataService, "valueDictDataCache");
  222 + assertEquals(2, valueDictDataCache.size());
  223 + assertPojoEquals(dictData01, valueDictDataCache.get(dictData01.getDictType(), dictData01.getValue()));
  224 + assertPojoEquals(dictData02, valueDictDataCache.get(dictData02.getDictType(), dictData02.getValue()));
  225 + // 断言 maxUpdateTime 缓存
  226 + Date maxUpdateTime = (Date) getFieldValue(dictDataService, "maxUpdateTime");
  227 + assertEquals(ObjectUtils.max(dictData01.getUpdateTime(), dictData02.getUpdateTime()), maxUpdateTime);
  228 + }
  229 +
196 230 @Test
197 231 public void testUpdateDictData_dictTypeNotExists() {
198 232 // mock 数据
... ...