Commit fcd44d8b0d7dc80a8db5d0386c12500810c404a4

Authored by YunaiV
1 parent 4be5b73d

修复工作流的单元测试

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysDeptMapper.java
@@ -23,7 +23,7 @@ public interface SysDeptMapper extends BaseMapperX<SysDeptDO> { @@ -23,7 +23,7 @@ public interface SysDeptMapper extends BaseMapperX<SysDeptDO> {
23 23
24 default SysDeptDO selectByParentIdAndName(Long parentId, String name) { 24 default SysDeptDO selectByParentIdAndName(Long parentId, String name) {
25 return selectOne(new LambdaQueryWrapper<SysDeptDO>().eq(SysDeptDO::getParentId, parentId) 25 return selectOne(new LambdaQueryWrapper<SysDeptDO>().eq(SysDeptDO::getParentId, parentId)
26 - .eq(SysDeptDO::getParentId, name)); 26 + .eq(SysDeptDO::getName, name));
27 } 27 }
28 28
29 default Integer selectCountByParentId(Long parentId) { 29 default Integer selectCountByParentId(Long parentId) {
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysMenuMapper.java
@@ -24,7 +24,7 @@ public interface SysMenuMapper extends BaseMapperX&lt;SysMenuDO&gt; { @@ -24,7 +24,7 @@ public interface SysMenuMapper extends BaseMapperX&lt;SysMenuDO&gt; {
24 } 24 }
25 25
26 default List<SysMenuDO> selectList(SysMenuListReqVO reqVO) { 26 default List<SysMenuDO> selectList(SysMenuListReqVO reqVO) {
27 - return selectList(new LambdaQueryWrapperX<SysMenuDO>().likeIfPresent(SysMenuDO::getParentId, reqVO.getName()) 27 + return selectList(new LambdaQueryWrapperX<SysMenuDO>().likeIfPresent(SysMenuDO::getName, reqVO.getName())
28 .eqIfPresent(SysMenuDO::getStatus, reqVO.getStatus())); 28 .eqIfPresent(SysMenuDO::getStatus, reqVO.getStatus()));
29 } 29 }
30 30
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/core/behavior/BpmUserTaskActivitiBehaviorTest.java
@@ -17,6 +17,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; @@ -17,6 +17,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
17 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 17 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
18 import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; 18 import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
19 import org.activiti.engine.impl.persistence.entity.TaskEntity; 19 import org.activiti.engine.impl.persistence.entity.TaskEntity;
  20 +import org.activiti.engine.impl.persistence.entity.TaskEntityImpl;
20 import org.junit.jupiter.api.Test; 21 import org.junit.jupiter.api.Test;
21 import org.mockito.InjectMocks; 22 import org.mockito.InjectMocks;
22 import org.mockito.Mock; 23 import org.mockito.Mock;
@@ -70,7 +71,7 @@ public class BpmUserTaskActivitiBehaviorTest extends BaseMockitoUnitTest { @@ -70,7 +71,7 @@ public class BpmUserTaskActivitiBehaviorTest extends BaseMockitoUnitTest {
70 // mock 方法 71 // mock 方法
71 List<SysUserDO> users = CollectionUtils.convertList(asSet(11L, 22L), 72 List<SysUserDO> users = CollectionUtils.convertList(asSet(11L, 22L),
72 id -> new SysUserDO().setId(id)); 73 id -> new SysUserDO().setId(id));
73 - when(userService.getUsersByPostIds(eq(rule.getOptions()))).thenReturn(users); 74 + when(userService.getUsersByDeptIds(eq(rule.getOptions()))).thenReturn(users);
74 mockGetUserMap(asSet(11L, 22L)); 75 mockGetUserMap(asSet(11L, 22L));
75 76
76 // 调用 77 // 调用
@@ -185,10 +186,11 @@ public class BpmUserTaskActivitiBehaviorTest extends BaseMockitoUnitTest { @@ -185,10 +186,11 @@ public class BpmUserTaskActivitiBehaviorTest extends BaseMockitoUnitTest {
185 186
186 @Test 187 @Test
187 public void testRemoveDisableUsers() { 188 public void testRemoveDisableUsers() {
188 - // 准备参数 189 + // 准备参数. 1L 可以找到;2L 是禁用的;3L 找不到
189 Set<Long> assigneeUserIds = asSet(1L, 2L, 3L); 190 Set<Long> assigneeUserIds = asSet(1L, 2L, 3L);
190 // mock 方法 191 // mock 方法
191 - SysUserDO user1 = randomPojo(SysUserDO.class, o -> o.setId(1L)); 192 + SysUserDO user1 = randomPojo(SysUserDO.class, o -> o.setId(1L)
  193 + .setStatus(CommonStatusEnum.ENABLE.getStatus()));
192 SysUserDO user2 = randomPojo(SysUserDO.class, o -> o.setId(2L) 194 SysUserDO user2 = randomPojo(SysUserDO.class, o -> o.setId(2L)
193 .setStatus(CommonStatusEnum.DISABLE.getStatus())); 195 .setStatus(CommonStatusEnum.DISABLE.getStatus()));
194 Map<Long, SysUserDO> userMap = MapUtil.builder(user1.getId(), user1) 196 Map<Long, SysUserDO> userMap = MapUtil.builder(user1.getId(), user1)
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmFormServiceTest.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.service.definition; 1 package cn.iocoder.yudao.adminserver.modules.bpm.service.definition;
2 2
  3 +import cn.hutool.core.util.RandomUtil;
3 import cn.iocoder.yudao.adminserver.BaseDbUnitTest; 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormCreateReqVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormCreateReqVO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormPageReqVO; 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormPageReqVO;
6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormUpdateReqVO; 7 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.form.BpmFormUpdateReqVO;
7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO; 8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmFormDO;
8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper; 9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmFormMapper;
  10 +import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmFormFieldRespDTO;
9 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl.BpmFormServiceImpl; 11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl.BpmFormServiceImpl;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 12 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  13 +import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
11 import org.junit.jupiter.api.Test; 14 import org.junit.jupiter.api.Test;
12 import org.springframework.context.annotation.Import; 15 import org.springframework.context.annotation.Import;
13 16
14 import javax.annotation.Resource; 17 import javax.annotation.Resource;
15 18
  19 +import java.util.ArrayList;
  20 +import java.util.Arrays;
  21 +import java.util.Collections;
  22 +import java.util.List;
  23 +import java.util.function.Consumer;
  24 +import java.util.function.Function;
  25 +import java.util.stream.Collectors;
  26 +import java.util.stream.Stream;
  27 +
16 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.FORM_NOT_EXISTS; 28 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.FORM_NOT_EXISTS;
17 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; 29 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
18 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; 30 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
@@ -38,7 +50,10 @@ public class BpmFormServiceTest extends BaseDbUnitTest { @@ -38,7 +50,10 @@ public class BpmFormServiceTest extends BaseDbUnitTest {
38 @Test 50 @Test
39 public void testCreateForm_success() { 51 public void testCreateForm_success() {
40 // 准备参数 52 // 准备参数
41 - BpmFormCreateReqVO reqVO = randomPojo(BpmFormCreateReqVO.class); 53 + BpmFormCreateReqVO reqVO = randomPojo(BpmFormCreateReqVO.class, o -> {
  54 + o.setConf("{}");
  55 + o.setFields(randomFields());
  56 + });
42 57
43 // 调用 58 // 调用
44 Long formId = formService.createForm(reqVO); 59 Long formId = formService.createForm(reqVO);
@@ -52,11 +67,16 @@ public class BpmFormServiceTest extends BaseDbUnitTest { @@ -52,11 +67,16 @@ public class BpmFormServiceTest extends BaseDbUnitTest {
52 @Test 67 @Test
53 public void testUpdateForm_success() { 68 public void testUpdateForm_success() {
54 // mock 数据 69 // mock 数据
55 - BpmFormDO dbForm = randomPojo(BpmFormDO.class); 70 + BpmFormDO dbForm = randomPojo(BpmFormDO.class, o -> {
  71 + o.setConf("{}");
  72 + o.setFields(randomFields());
  73 + });
56 formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据 74 formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据
57 // 准备参数 75 // 准备参数
58 BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> { 76 BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> {
59 o.setId(dbForm.getId()); // 设置更新的 ID 77 o.setId(dbForm.getId()); // 设置更新的 ID
  78 + o.setConf("{'yudao': 'yuanma'}");
  79 + o.setFields(randomFields());
60 }); 80 });
61 81
62 // 调用 82 // 调用
@@ -69,7 +89,10 @@ public class BpmFormServiceTest extends BaseDbUnitTest { @@ -69,7 +89,10 @@ public class BpmFormServiceTest extends BaseDbUnitTest {
69 @Test 89 @Test
70 public void testUpdateForm_notExists() { 90 public void testUpdateForm_notExists() {
71 // 准备参数 91 // 准备参数
72 - BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class); 92 + BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> {
  93 + o.setConf("{'yudao': 'yuanma'}");
  94 + o.setFields(randomFields());
  95 + });
73 96
74 // 调用, 并断言异常 97 // 调用, 并断言异常
75 assertServiceException(() -> formService.updateForm(reqVO), FORM_NOT_EXISTS); 98 assertServiceException(() -> formService.updateForm(reqVO), FORM_NOT_EXISTS);
@@ -119,4 +142,11 @@ public class BpmFormServiceTest extends BaseDbUnitTest { @@ -119,4 +142,11 @@ public class BpmFormServiceTest extends BaseDbUnitTest {
119 assertPojoEquals(dbForm, pageResult.getList().get(0)); 142 assertPojoEquals(dbForm, pageResult.getList().get(0));
120 } 143 }
121 144
  145 + private List<String> randomFields() {
  146 + int size = RandomUtil.randomInt(1, 3);
  147 + return Stream.iterate(0, i -> i).limit(size)
  148 + .map(i -> JsonUtils.toJsonString(randomPojo(BpmFormFieldRespDTO.class)))
  149 + .collect(Collectors.toList());
  150 + }
  151 +
122 } 152 }
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmUserGroupServiceTest.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.service.definition; 1 package cn.iocoder.yudao.adminserver.modules.bpm.service.definition;
2 2
  3 +import cn.hutool.core.date.DateUtil;
3 import cn.iocoder.yudao.adminserver.BaseDbUnitTest; 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupCreateReqVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupCreateReqVO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupPageReqVO; 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.BpmUserGroupPageReqVO;
@@ -7,7 +8,9 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.B @@ -7,7 +8,9 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.group.B
7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmUserGroupDO; 8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmUserGroupDO;
8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmUserGroupMapper; 9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmUserGroupMapper;
9 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl.BpmUserGroupServiceImpl; 10 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl.BpmUserGroupServiceImpl;
  11 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 12 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  13 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
11 import org.junit.jupiter.api.Test; 14 import org.junit.jupiter.api.Test;
12 import org.springframework.context.annotation.Import; 15 import org.springframework.context.annotation.Import;
13 16
@@ -98,27 +101,27 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest { @@ -98,27 +101,27 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
98 assertServiceException(() -> userGroupService.deleteUserGroup(id), USER_GROUP_NOT_EXISTS); 101 assertServiceException(() -> userGroupService.deleteUserGroup(id), USER_GROUP_NOT_EXISTS);
99 } 102 }
100 103
101 - @Test // TODO 请修改 null 为需要的值 104 + @Test
102 public void testGetUserGroupPage() { 105 public void testGetUserGroupPage() {
103 // mock 数据 106 // mock 数据
104 BpmUserGroupDO dbUserGroup = randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到 107 BpmUserGroupDO dbUserGroup = randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到
105 - o.setName(null);  
106 - o.setStatus(null);  
107 - o.setCreateTime(null); 108 + o.setName("芋道源码");
  109 + o.setStatus(CommonStatusEnum.ENABLE.getStatus());
  110 + o.setCreateTime(DateUtils.buildTime(2021, 11, 11));
108 }); 111 });
109 userGroupMapper.insert(dbUserGroup); 112 userGroupMapper.insert(dbUserGroup);
110 // 测试 name 不匹配 113 // 测试 name 不匹配
111 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setName(null))); 114 + userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setName("芋道")));
112 // 测试 status 不匹配 115 // 测试 status 不匹配
113 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(null))); 116 + userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
114 // 测试 createTime 不匹配 117 // 测试 createTime 不匹配
115 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(null))); 118 + userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(DateUtils.buildTime(2021, 12, 12))));
116 // 准备参数 119 // 准备参数
117 BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO(); 120 BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO();
118 - reqVO.setName(null);  
119 - reqVO.setStatus(null);  
120 - reqVO.setBeginCreateTime(null);  
121 - reqVO.setEndCreateTime(null); 121 + reqVO.setName("源码");
  122 + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
  123 + reqVO.setBeginCreateTime(DateUtils.buildTime(2021, 11, 10));
  124 + reqVO.setEndCreateTime(DateUtils.buildTime(2021, 11, 12));
122 125
123 // 调用 126 // 调用
124 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO); 127 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO);
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptServiceTest.java
@@ -172,7 +172,6 @@ class SysDeptServiceTest extends BaseDbUnitTest { @@ -172,7 +172,6 @@ class SysDeptServiceTest extends BaseDbUnitTest {
172 }); 172 });
173 // 调用, 并断言异常 173 // 调用, 并断言异常
174 assertServiceException(() -> deptService.updateDept(reqVO), DEPT_NAME_DUPLICATE); 174 assertServiceException(() -> deptService.updateDept(reqVO), DEPT_NAME_DUPLICATE);
175 -  
176 } 175 }
177 176
178 @Test 177 @Test
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java
@@ -28,7 +28,7 @@ import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeCons @@ -28,7 +28,7 @@ import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeCons
28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; 28 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; 29 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
30 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; 30 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
31 -import static org.junit.jupiter.api.Assertions.assertEquals; 31 +import static org.junit.jupiter.api.Assertions.*;
32 import static org.mockito.Mockito.verify; 32 import static org.mockito.Mockito.verify;
33 33
34 @Import(SysMenuServiceImpl.class) 34 @Import(SysMenuServiceImpl.class)
@@ -146,12 +146,12 @@ public class SysMenuServiceTest extends BaseDbUnitTest { @@ -146,12 +146,12 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
146 SysMenuDO sonMenuDO = initParentAndSonMenuDO(); 146 SysMenuDO sonMenuDO = initParentAndSonMenuDO();
147 Long sonId = sonMenuDO.getId(); 147 Long sonId = sonMenuDO.getId();
148 148
149 - //调用 149 + // 调用
150 sysMenuService.deleteMenu(sonId); 150 sysMenuService.deleteMenu(sonId);
151 151
152 - //断言 152 + // 断言
153 SysMenuDO menuDO = menuMapper.selectById(sonId); 153 SysMenuDO menuDO = menuMapper.selectById(sonId);
154 - Assert.isNull(menuDO); 154 + assertNull(menuDO);
155 verify(sysPermissionService).processMenuDeleted(sonId); 155 verify(sysPermissionService).processMenuDeleted(sonId);
156 verify(sysMenuProducer).sendMenuRefreshMessage(); 156 verify(sysMenuProducer).sendMenuRefreshMessage();
157 } 157 }
@@ -182,18 +182,18 @@ public class SysMenuServiceTest extends BaseDbUnitTest { @@ -182,18 +182,18 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
182 menuMapper.insert(sonMenu); 182 menuMapper.insert(sonMenu);
183 idMenuMap.put(sonMenu.getId(), sonMenu); 183 idMenuMap.put(sonMenu.getId(), sonMenu);
184 184
185 - //调用 185 + // 调用
186 List<SysMenuDO> menuDOS = sysMenuService.getMenus(); 186 List<SysMenuDO> menuDOS = sysMenuService.getMenus();
187 187
188 - //断言  
189 - Assert.isTrue(menuDOS.size() == idMenuMap.size()); 188 + // 断言
  189 + assertEquals(menuDOS.size(), idMenuMap.size());
190 menuDOS.forEach(m -> assertPojoEquals(idMenuMap.get(m.getId()), m)); 190 menuDOS.forEach(m -> assertPojoEquals(idMenuMap.get(m.getId()), m));
191 } 191 }
192 192
193 @Test 193 @Test
194 public void testGetMenusReqVo_success() { 194 public void testGetMenusReqVo_success() {
195 Map<Long, SysMenuDO> idMenuMap = new HashMap<>(); 195 Map<Long, SysMenuDO> idMenuMap = new HashMap<>();
196 - //用于验证可以模糊搜索名称包含"name",状态为1的menu 196 + // 用于验证可以模糊搜索名称包含"name",状态为1的menu
197 SysMenuDO menu = createMenuDO(MenuTypeEnum.MENU, "name2", 0L, 1); 197 SysMenuDO menu = createMenuDO(MenuTypeEnum.MENU, "name2", 0L, 1);
198 menuMapper.insert(menu); 198 menuMapper.insert(menu);
199 idMenuMap.put(menu.getId(), menu); 199 idMenuMap.put(menu.getId(), menu);
@@ -206,32 +206,32 @@ public class SysMenuServiceTest extends BaseDbUnitTest { @@ -206,32 +206,32 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
206 menuMapper.insert(menu); 206 menuMapper.insert(menu);
207 idMenuMap.put(menu.getId(), menu); 207 idMenuMap.put(menu.getId(), menu);
208 208
209 - //以下是不符合搜索条件的的menu 209 + // 以下是不符合搜索条件的的menu
210 menu = createMenuDO(MenuTypeEnum.MENU, "xxxxxx", 0L, 1); 210 menu = createMenuDO(MenuTypeEnum.MENU, "xxxxxx", 0L, 1);
211 menuMapper.insert(menu); 211 menuMapper.insert(menu);
212 menu = createMenuDO(MenuTypeEnum.MENU, "name", 0L, 2); 212 menu = createMenuDO(MenuTypeEnum.MENU, "name", 0L, 2);
213 menuMapper.insert(menu); 213 menuMapper.insert(menu);
214 214
215 - //调用 215 + // 调用
216 SysMenuListReqVO reqVO = new SysMenuListReqVO(); 216 SysMenuListReqVO reqVO = new SysMenuListReqVO();
217 reqVO.setStatus(1); 217 reqVO.setStatus(1);
218 reqVO.setName("name"); 218 reqVO.setName("name");
219 List<SysMenuDO> menuDOS = sysMenuService.getMenus(reqVO); 219 List<SysMenuDO> menuDOS = sysMenuService.getMenus(reqVO);
220 220
221 - //断言  
222 - Assert.isTrue(menuDOS.size() == idMenuMap.size()); 221 + // 断言
  222 + assertEquals(menuDOS.size(), idMenuMap.size());
223 menuDOS.forEach(m -> assertPojoEquals(idMenuMap.get(m.getId()), m)); 223 menuDOS.forEach(m -> assertPojoEquals(idMenuMap.get(m.getId()), m));
224 } 224 }
225 225
226 @Test 226 @Test
227 public void testListMenusFromCache_success() throws Exception { 227 public void testListMenusFromCache_success() throws Exception {
228 Map<Long, SysMenuDO> mockCacheMap = new HashMap<>(); 228 Map<Long, SysMenuDO> mockCacheMap = new HashMap<>();
229 - //获取代理对象 229 + // 获取代理对象
230 SysMenuServiceImpl target = (SysMenuServiceImpl) SpringAopUtils.getTarget(sysMenuService); 230 SysMenuServiceImpl target = (SysMenuServiceImpl) SpringAopUtils.getTarget(sysMenuService);
231 BeanUtil.setFieldValue(target, "menuCache", mockCacheMap); 231 BeanUtil.setFieldValue(target, "menuCache", mockCacheMap);
232 232
233 Map<Long, SysMenuDO> idMenuMap = new HashMap<>(); 233 Map<Long, SysMenuDO> idMenuMap = new HashMap<>();
234 - //用于验证搜索类型为MENU,状态为1的menu 234 + // 用于验证搜索类型为MENU,状态为1的menu
235 SysMenuDO menuDO = createMenuDO(1L, MenuTypeEnum.MENU, "name", 0L, 1); 235 SysMenuDO menuDO = createMenuDO(1L, MenuTypeEnum.MENU, "name", 0L, 1);
236 mockCacheMap.put(menuDO.getId(), menuDO); 236 mockCacheMap.put(menuDO.getId(), menuDO);
237 idMenuMap.put(menuDO.getId(), menuDO); 237 idMenuMap.put(menuDO.getId(), menuDO);
@@ -240,7 +240,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest { @@ -240,7 +240,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
240 mockCacheMap.put(menuDO.getId(), menuDO); 240 mockCacheMap.put(menuDO.getId(), menuDO);
241 idMenuMap.put(menuDO.getId(), menuDO); 241 idMenuMap.put(menuDO.getId(), menuDO);
242 242
243 - //以下是不符合搜索条件的menu 243 + // 以下是不符合搜索条件的menu
244 menuDO = createMenuDO(3L, MenuTypeEnum.BUTTON, "name", 0L, 1); 244 menuDO = createMenuDO(3L, MenuTypeEnum.BUTTON, "name", 0L, 1);
245 mockCacheMap.put(menuDO.getId(), menuDO); 245 mockCacheMap.put(menuDO.getId(), menuDO);
246 menuDO = createMenuDO(4L, MenuTypeEnum.MENU, "name", 0L, 2); 246 menuDO = createMenuDO(4L, MenuTypeEnum.MENU, "name", 0L, 2);
@@ -248,24 +248,24 @@ public class SysMenuServiceTest extends BaseDbUnitTest { @@ -248,24 +248,24 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
248 248
249 List<SysMenuDO> menuDOS = sysMenuService.listMenusFromCache(Collections.singletonList(MenuTypeEnum.MENU.getType()), 249 List<SysMenuDO> menuDOS = sysMenuService.listMenusFromCache(Collections.singletonList(MenuTypeEnum.MENU.getType()),
250 Collections.singletonList(CommonStatusEnum.DISABLE.getStatus())); 250 Collections.singletonList(CommonStatusEnum.DISABLE.getStatus()));
251 - Assert.isTrue(menuDOS.size() == idMenuMap.size()); 251 + assertEquals(menuDOS.size(), idMenuMap.size());
252 menuDOS.forEach(m -> assertPojoEquals(idMenuMap.get(m.getId()), m)); 252 menuDOS.forEach(m -> assertPojoEquals(idMenuMap.get(m.getId()), m));
253 } 253 }
254 254
255 @Test 255 @Test
256 public void testListMenusFromCache2_success() throws Exception { 256 public void testListMenusFromCache2_success() throws Exception {
257 Map<Long, SysMenuDO> mockCacheMap = new HashMap<>(); 257 Map<Long, SysMenuDO> mockCacheMap = new HashMap<>();
258 - //获取代理对象 258 + // 获取代理对象
259 SysMenuServiceImpl target = (SysMenuServiceImpl) SpringAopUtils.getTarget(sysMenuService); 259 SysMenuServiceImpl target = (SysMenuServiceImpl) SpringAopUtils.getTarget(sysMenuService);
260 BeanUtil.setFieldValue(target, "menuCache", mockCacheMap); 260 BeanUtil.setFieldValue(target, "menuCache", mockCacheMap);
261 261
262 Map<Long, SysMenuDO> idMenuMap = new HashMap<>(); 262 Map<Long, SysMenuDO> idMenuMap = new HashMap<>();
263 - //验证搜索id为1, 类型为MENU, 状态为1 的menu 263 + // 验证搜索id为1, 类型为MENU, 状态为1 的menu
264 SysMenuDO menuDO = createMenuDO(1L, MenuTypeEnum.MENU, "name", 0L, 1); 264 SysMenuDO menuDO = createMenuDO(1L, MenuTypeEnum.MENU, "name", 0L, 1);
265 mockCacheMap.put(menuDO.getId(), menuDO); 265 mockCacheMap.put(menuDO.getId(), menuDO);
266 idMenuMap.put(menuDO.getId(), menuDO); 266 idMenuMap.put(menuDO.getId(), menuDO);
267 267
268 - //以下是不符合搜索条件的menu 268 + // 以下是不符合搜索条件的menu
269 menuDO = createMenuDO(2L, MenuTypeEnum.MENU, "name", 0L, 1); 269 menuDO = createMenuDO(2L, MenuTypeEnum.MENU, "name", 0L, 1);
270 mockCacheMap.put(menuDO.getId(), menuDO); 270 mockCacheMap.put(menuDO.getId(), menuDO);
271 menuDO = createMenuDO(3L, MenuTypeEnum.BUTTON, "name", 0L, 1); 271 menuDO = createMenuDO(3L, MenuTypeEnum.BUTTON, "name", 0L, 1);
@@ -275,7 +275,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest { @@ -275,7 +275,7 @@ public class SysMenuServiceTest extends BaseDbUnitTest {
275 275
276 List<SysMenuDO> menuDOS = sysMenuService.listMenusFromCache(Collections.singletonList(1L), 276 List<SysMenuDO> menuDOS = sysMenuService.listMenusFromCache(Collections.singletonList(1L),
277 Collections.singletonList(MenuTypeEnum.MENU.getType()), Collections.singletonList(1)); 277 Collections.singletonList(MenuTypeEnum.MENU.getType()), Collections.singletonList(1));
278 - Assert.isTrue(menuDOS.size() == idMenuMap.size()); 278 + assertEquals(menuDOS.size(), idMenuMap.size());
279 menuDOS.forEach(menu -> assertPojoEquals(idMenuMap.get(menu.getId()), menu)); 279 menuDOS.forEach(menu -> assertPojoEquals(idMenuMap.get(menu.getId()), menu));
280 } 280 }
281 281
yudao-admin-server/src/test/resources/logback-spring.xml deleted
1 -<configuration>  
2 - <!-- 引用 Spring Boot 的 logback 基础配置 -->  
3 - <include resource="org/springframework/boot/logging/logback/defaults.xml" />  
4 -</configuration>  
yudao-admin-server/src/test/resources/logback.xml 0 → 100644
  1 +<configuration>
  2 + <!-- 由于单元测试未开启 Spring Boot 的上下文,所以只能使用 logback.xml 文件 -->
  3 +
  4 + <!-- 引用 Spring Boot 的 logback 基础配置 -->
  5 + <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  6 +
  7 + <!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
  8 + <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%thread] [%tid] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
  9 +
  10 + <!-- 控制台 Appender -->
  11 + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
  12 + <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  13 + <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
  14 + <pattern>${PATTERN_DEFAULT}</pattern>
  15 + </layout>
  16 + </encoder>
  17 + </appender>
  18 +
  19 + <root level="INFO">
  20 + <appender-ref ref="STDOUT"/>
  21 + </root>
  22 +
  23 +</configuration>
yudao-admin-server/src/test/resources/sql/clean.sql
@@ -35,3 +35,4 @@ DELETE FROM pay_refund; @@ -35,3 +35,4 @@ DELETE FROM pay_refund;
35 35
36 -- bpm 开头的 DB 36 -- bpm 开头的 DB
37 DELETE FROM "bpm_form"; 37 DELETE FROM "bpm_form";
  38 +DELETE FROM "bpm_user_group";
yudao-admin-server/src/test/resources/sql/create_tables.sql
@@ -74,7 +74,7 @@ CREATE TABLE IF NOT EXISTS &quot;sys_dept&quot; ( @@ -74,7 +74,7 @@ CREATE TABLE IF NOT EXISTS &quot;sys_dept&quot; (
74 "name" varchar(30) NOT NULL DEFAULT '', 74 "name" varchar(30) NOT NULL DEFAULT '',
75 "parent_id" bigint NOT NULL DEFAULT '0', 75 "parent_id" bigint NOT NULL DEFAULT '0',
76 "sort" int NOT NULL DEFAULT '0', 76 "sort" int NOT NULL DEFAULT '0',
77 - "leader" varchar(20) DEFAULT NULL, 77 + "leader_user_id" bigint DEFAULT NULL,
78 "phone" varchar(11) DEFAULT NULL, 78 "phone" varchar(11) DEFAULT NULL,
79 "email" varchar(50) DEFAULT NULL, 79 "email" varchar(50) DEFAULT NULL,
80 "status" tinyint NOT NULL, 80 "status" tinyint NOT NULL,
@@ -490,8 +490,9 @@ CREATE TABLE IF NOT EXISTS &quot;pay_merchant&quot; @@ -490,8 +490,9 @@ CREATE TABLE IF NOT EXISTS &quot;pay_merchant&quot;
490 PRIMARY KEY ("id") 490 PRIMARY KEY ("id")
491 ) COMMENT '支付商户信息'; 491 ) COMMENT '支付商户信息';
492 492
493 -CREATE TABLE IF NOT EXISTS "pay_app"  
494 -( 493 +-- bpm 开头的 DB
  494 +
  495 +CREATE TABLE IF NOT EXISTS "pay_app" (
495 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, 496 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
496 "name" varchar(64) NOT NULL, 497 "name" varchar(64) NOT NULL,
497 "status" tinyint NOT NULL, 498 "status" tinyint NOT NULL,
@@ -507,8 +508,7 @@ CREATE TABLE IF NOT EXISTS &quot;pay_app&quot; @@ -507,8 +508,7 @@ CREATE TABLE IF NOT EXISTS &quot;pay_app&quot;
507 PRIMARY KEY ("id") 508 PRIMARY KEY ("id")
508 ) COMMENT = '支付应用信息'; 509 ) COMMENT = '支付应用信息';
509 510
510 -CREATE TABLE IF NOT EXISTS "pay_channel"  
511 -( 511 +CREATE TABLE IF NOT EXISTS "pay_channel" (
512 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, 512 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
513 "code" varchar(32) NOT NULL, 513 "code" varchar(32) NOT NULL,
514 "status" tinyint(4) NOT NULL, 514 "status" tinyint(4) NOT NULL,
@@ -525,8 +525,7 @@ CREATE TABLE IF NOT EXISTS &quot;pay_channel&quot; @@ -525,8 +525,7 @@ CREATE TABLE IF NOT EXISTS &quot;pay_channel&quot;
525 PRIMARY KEY ("id") 525 PRIMARY KEY ("id")
526 ) COMMENT = '支付渠道'; 526 ) COMMENT = '支付渠道';
527 527
528 -CREATE TABLE IF NOT EXISTS `pay_order`  
529 -( 528 +CREATE TABLE IF NOT EXISTS `pay_order` (
530 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, 529 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
531 `merchant_id` bigint(20) NOT NULL, 530 `merchant_id` bigint(20) NOT NULL,
532 `app_id` bigint(20) NOT NULL, 531 `app_id` bigint(20) NOT NULL,
@@ -559,12 +558,8 @@ CREATE TABLE IF NOT EXISTS `pay_order` @@ -559,12 +558,8 @@ CREATE TABLE IF NOT EXISTS `pay_order`
559 PRIMARY KEY ("id") 558 PRIMARY KEY ("id")
560 ) COMMENT = '支付订单'; 559 ) COMMENT = '支付订单';
561 560
562 -  
563 -  
564 -CREATE TABLE IF NOT EXISTS `pay_refund`  
565 -( 561 +CREATE TABLE IF NOT EXISTS `pay_refund` (
566 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, 562 "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
567 - `req_no` varchar(64) NOT NULL,  
568 `merchant_id` bigint(20) NOT NULL, 563 `merchant_id` bigint(20) NOT NULL,
569 `app_id` bigint(20) NOT NULL, 564 `app_id` bigint(20) NOT NULL,
570 `channel_id` bigint(20) NOT NULL, 565 `channel_id` bigint(20) NOT NULL,
@@ -597,7 +592,7 @@ CREATE TABLE IF NOT EXISTS `pay_refund` @@ -597,7 +592,7 @@ CREATE TABLE IF NOT EXISTS `pay_refund`
597 PRIMARY KEY ("id") 592 PRIMARY KEY ("id")
598 ) COMMENT = '退款订单'; 593 ) COMMENT = '退款订单';
599 594
600 - 595 +-- bpm 开头的 DB
601 596
602 CREATE TABLE IF NOT EXISTS "bpm_form" ( 597 CREATE TABLE IF NOT EXISTS "bpm_form" (
603 "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, 598 "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
@@ -613,3 +608,17 @@ CREATE TABLE IF NOT EXISTS &quot;bpm_form&quot; ( @@ -613,3 +608,17 @@ CREATE TABLE IF NOT EXISTS &quot;bpm_form&quot; (
613 "deleted" bit NOT NULL DEFAULT FALSE, 608 "deleted" bit NOT NULL DEFAULT FALSE,
614 PRIMARY KEY ("id") 609 PRIMARY KEY ("id")
615 ) COMMENT '动态表单'; 610 ) COMMENT '动态表单';
  611 +
  612 +CREATE TABLE IF NOT EXISTS "bpm_user_group" (
  613 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  614 + "name" varchar(63) NOT NULL,
  615 + "description" varchar(255) NOT NULL,
  616 + "status" tinyint NOT NULL,
  617 + "member_user_ids" varchar(255) NOT NULL,
  618 + "creator" varchar(64) DEFAULT '',
  619 + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  620 + "updater" varchar(64) DEFAULT '',
  621 + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  622 + "deleted" bit NOT NULL DEFAULT FALSE,
  623 + PRIMARY KEY ("id")
  624 + ) COMMENT '用户组';
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
@@ -70,7 +70,7 @@ public class RandomUtils { @@ -70,7 +70,7 @@ public class RandomUtils {
70 } 70 }
71 71
72 public static <T> Set<T> randomSet(Class<T> clazz) { 72 public static <T> Set<T> randomSet(Class<T> clazz) {
73 - return Stream.iterate(0, i -> i).limit(RandomUtil.randomInt(0, RANDOM_DATE_MAX)) 73 + return Stream.iterate(0, i -> i).limit(RandomUtil.randomInt(1, RANDOM_COLLECTION_LENGTH))
74 .map(i -> randomPojo(clazz)).collect(Collectors.toSet()); 74 .map(i -> randomPojo(clazz)).collect(Collectors.toSet());
75 } 75 }
76 76
更新日志.md
@@ -39,6 +39,7 @@ @@ -39,6 +39,7 @@
39 * 总代码行数:61594 39 * 总代码行数:61594
40 * 源码代码行数:37931 40 * 源码代码行数:37931
41 * 注释行数:14225 41 * 注释行数:14225
  42 +* 单元测试用例数:278
42 43
43 ### ⭐ New Features 44 ### ⭐ New Features
44 45