Commit aa37c2cd7c86406bc711d48f8354f0487e4a87ef
1 parent
987fcd36
完善 OperateLogServiceImpl 单元测试
Showing
4 changed files
with
51 additions
and
67 deletions
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 | } | ... | ... |