Commit aa37c2cd7c86406bc711d48f8354f0487e4a87ef

Authored by YunaiV
1 parent 987fcd36

完善 OperateLogServiceImpl 单元测试

yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/OperateLogController.java
... ... @@ -71,7 +71,7 @@ public class OperateLogController {
71 71 @PreAuthorize("@ss.hasPermission('system:operate-log:export')")
72 72 @OperateLog(type = EXPORT)
73 73 public void exportOperateLog(HttpServletResponse response, @Valid OperateLogExportReqVO reqVO) throws IOException {
74   - List<OperateLogDO> list = operateLogService.getOperateLogs(reqVO);
  74 + List<OperateLogDO> list = operateLogService.getOperateLogList(reqVO);
75 75  
76 76 // 获得拼接需要的数据
77 77 Collection<Long> userIds = CollectionUtils.convertList(list, OperateLogDO::getUserId);
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java
1 1 package cn.iocoder.yudao.module.system.service.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.operatelog.core.service.OperateLog;
5   -import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService;
6 4 import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
7 5 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogExportReqVO;
8 6 import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
... ... @@ -38,6 +36,6 @@ public interface OperateLogService {
38 36 * @param reqVO 列表条件
39 37 * @return 日志列表
40 38 */
41   - List<OperateLogDO> getOperateLogs(OperateLogExportReqVO reqVO);
  39 + List<OperateLogDO> getOperateLogList(OperateLogExportReqVO reqVO);
42 40  
43 41 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java
... ... @@ -59,7 +59,7 @@ public class OperateLogServiceImpl implements OperateLogService {
59 59 }
60 60  
61 61 @Override
62   - public List<OperateLogDO> getOperateLogs(OperateLogExportReqVO reqVO) {
  62 + public List<OperateLogDO> getOperateLogList(OperateLogExportReqVO reqVO) {
63 63 // 处理基于用户昵称的查询
64 64 Collection<Long> userIds = null;
65 65 if (StrUtil.isNotEmpty(reqVO.getUserNickname())) {
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImplTest.java
... ... @@ -5,8 +5,6 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5 5 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
6 6 import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
7 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8   -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
9   -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
10 8 import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
11 9 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
12 10 import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
... ... @@ -16,20 +14,20 @@ import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.Oper
16 14 import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
17 15 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
18 16 import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper;
19   -import cn.iocoder.yudao.module.system.enums.common.SexEnum;
20 17 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
21 18 import org.junit.jupiter.api.Test;
22 19 import org.springframework.boot.test.mock.mockito.MockBean;
23 20 import org.springframework.context.annotation.Import;
24 21  
25 22 import javax.annotation.Resource;
26   -import java.time.LocalDateTime;
27 23 import java.util.Collections;
28 24 import java.util.List;
29 25  
30 26 import static cn.hutool.core.util.RandomUtil.randomEle;
31 27 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST;
  28 +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
32 29 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
  30 +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
33 31 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
34 32 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
35 33 import static org.junit.jupiter.api.Assertions.assertEquals;
... ... @@ -49,34 +47,28 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
49 47  
50 48 @Test
51 49 public void testCreateOperateLogAsync() {
52   - String traceId = TracerUtils.getTraceId();
53   - OperateLogCreateReqDTO reqVO = RandomUtils.randomPojo(OperateLogCreateReqDTO.class, o -> {
54   - o.setTraceId(traceId);
55   - o.setUserId(randomLongId());
56   - o.setUserType(randomEle(UserTypeEnum.values()).getValue());
57   - o.setExts(MapUtil.<String, Object>builder("orderId", randomLongId()).build());
58   - });
  50 + OperateLogCreateReqDTO reqVO = RandomUtils.randomPojo(OperateLogCreateReqDTO.class,
  51 + o -> o.setExts(MapUtil.<String, Object>builder("orderId", randomLongId()).build()));
59 52  
60   - // 执行service方法
  53 + // 调研
61 54 operateLogServiceImpl.createOperateLog(reqVO);
62   - // 断言插入是否正确
63   - OperateLogDO sysOperateLogDO = operateLogMapper.selectOne("trace_id", traceId);
64   - assertPojoEquals(reqVO, sysOperateLogDO);
  55 + // 断言
  56 + OperateLogDO operateLogDO = operateLogMapper.selectOne(null);
  57 + assertPojoEquals(reqVO, operateLogDO);
65 58 }
66 59  
67 60 @Test
68 61 public void testGetOperateLogPage() {
69   - // 构造测试数据
70   - // 先构造用户
  62 + // mock(用户信息)
71 63 AdminUserDO user = RandomUtils.randomPojo(AdminUserDO.class, o -> {
72   - o.setNickname("wangkai");
73   - o.setSex(SexEnum.MALE.getSex());
  64 + o.setNickname("wang");
74 65 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
75 66 });
76   - when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
  67 + when(userService.getUsersByNickname("wang")).thenReturn(Collections.singletonList(user));
77 68 Long userId = user.getId();
  69 +
78 70 // 构造操作日志
79   - OperateLogDO sysOperateLogDO = RandomUtils.randomPojo(OperateLogDO.class, o -> {
  71 + OperateLogDO operateLogDO = RandomUtils.randomPojo(OperateLogDO.class, o -> {
80 72 o.setUserId(userId);
81 73 o.setUserType(randomEle(UserTypeEnum.values()).getValue());
82 74 o.setModule("order");
... ... @@ -85,50 +77,46 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
85 77 o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode());
86 78 o.setExts(MapUtil.<String, Object>builder("orderId", randomLongId()).build());
87 79 });
88   - operateLogMapper.insert(sysOperateLogDO);
89   -
90   - // 下面几个是不匹配的数据
91   - // 随机 userId
92   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setUserId(userId + 1)));
93   - // module 不同
94   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setModule("user")));
95   - // type 不同
96   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType())));
97   - // createTime 不同
98   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6))));
99   - // resultCode 不同
100   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setResultCode(BAD_REQUEST.getCode())));
  80 + operateLogMapper.insert(operateLogDO);
  81 + // 测试 userId 不匹配
  82 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setUserId(userId + 1)));
  83 + // 测试 module 不匹配
  84 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setModule("user")));
  85 + // 测试 type 不匹配
  86 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setType(OperateTypeEnum.IMPORT.getType())));
  87 + // 测试 createTime 不匹配
  88 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setStartTime(buildTime(2021, 2, 6))));
  89 + // 测试 resultCode 不匹配
  90 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setResultCode(BAD_REQUEST.getCode())));
101 91  
102 92 // 构造调用参数
103 93 OperateLogPageReqVO reqVO = new OperateLogPageReqVO();
104   - reqVO.setUserNickname("wangkai");
  94 + reqVO.setUserNickname("wang");
105 95 reqVO.setModule("order");
106 96 reqVO.setType(OperateTypeEnum.CREATE.getType());
107   - reqVO.setStartTime((new LocalDateTime[]{buildTime(2021, 3, 5),
108   - buildTime(2021, 3, 7)}));
  97 + reqVO.setStartTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7));
109 98 reqVO.setSuccess(true);
110 99  
111   - // 调用service方法
  100 + // 调用
112 101 PageResult<OperateLogDO> pageResult = operateLogServiceImpl.getOperateLogPage(reqVO);
113 102 // 断言,只查到了一条符合条件的
114 103 assertEquals(1, pageResult.getTotal());
115 104 assertEquals(1, pageResult.getList().size());
116   - assertPojoEquals(sysOperateLogDO, pageResult.getList().get(0));
  105 + assertPojoEquals(operateLogDO, pageResult.getList().get(0));
117 106 }
118 107  
119 108 @Test
120 109 public void testGetOperateLogs() {
121   - // 构造测试数据
122   - // 先构造用户
  110 + // mock(用户信息)
123 111 AdminUserDO user = RandomUtils.randomPojo(AdminUserDO.class, o -> {
124   - o.setNickname("wangkai");
125   - o.setSex(SexEnum.MALE.getSex());
  112 + o.setNickname("wang");
126 113 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
127 114 });
128   - when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
  115 + when(userService.getUsersByNickname("wang")).thenReturn(Collections.singletonList(user));
129 116 Long userId = user.getId();
  117 +
130 118 // 构造操作日志
131   - OperateLogDO sysOperateLogDO = RandomUtils.randomPojo(OperateLogDO.class, o -> {
  119 + OperateLogDO operateLogDO = RandomUtils.randomPojo(OperateLogDO.class, o -> {
132 120 o.setUserId(userId);
133 121 o.setUserType(randomEle(UserTypeEnum.values()).getValue());
134 122 o.setModule("order");
... ... @@ -137,33 +125,31 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
137 125 o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode());
138 126 o.setExts(MapUtil.<String, Object>builder("orderId", randomLongId()).build());
139 127 });
140   - operateLogMapper.insert(sysOperateLogDO);
141   -
142   - // 下面几个是不匹配的数据
143   - // 随机 userId
144   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setUserId(userId + 1)));
145   - // module 不同
146   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setModule("user")));
147   - // type 不同
148   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType())));
149   - // createTime 不同
150   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6))));
151   - // resultCode 不同
152   - operateLogMapper.insert(ObjectUtils.cloneIgnoreId(sysOperateLogDO, logDO -> logDO.setResultCode(BAD_REQUEST.getCode())));
  128 + operateLogMapper.insert(operateLogDO);
  129 + // 测试 userId 不匹配
  130 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setUserId(userId + 1)));
  131 + // 测试 module 不匹配
  132 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setModule("user")));
  133 + // 测试 type 不匹配
  134 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setType(OperateTypeEnum.IMPORT.getType())));
  135 + // 测试 createTime 不匹配
  136 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setStartTime(buildTime(2021, 2, 6))));
  137 + // 测试 resultCode 不匹配
  138 + operateLogMapper.insert(cloneIgnoreId(operateLogDO, o -> o.setResultCode(BAD_REQUEST.getCode())));
153 139  
154 140 // 构造调用参数
155 141 OperateLogExportReqVO reqVO = new OperateLogExportReqVO();
156   - reqVO.setUserNickname("wangkai");
  142 + reqVO.setUserNickname("wang");
157 143 reqVO.setModule("order");
158 144 reqVO.setType(OperateTypeEnum.CREATE.getType());
159   - reqVO.setStartTime((new LocalDateTime[]{buildTime(2021, 3, 5),buildTime(2021, 3, 7)}));
  145 + reqVO.setStartTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7));
160 146 reqVO.setSuccess(true);
161 147  
162 148 // 调用 service 方法
163   - List<OperateLogDO> list = operateLogServiceImpl.getOperateLogs(reqVO);
  149 + List<OperateLogDO> list = operateLogServiceImpl.getOperateLogList(reqVO);
164 150 // 断言,只查到了一条符合条件的
165 151 assertEquals(1, list.size());
166   - assertPojoEquals(sysOperateLogDO, list.get(0));
  152 + assertPojoEquals(operateLogDO, list.get(0));
167 153 }
168 154  
169 155 }
... ...