package cn.iocoder.yudao.module.system.controller.admin.logger;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
import cn.iocoder.yudao.module.system.service.logger.OperateLogService;
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
import jakarta.servlet.http.HttpServletResponse;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
import static org.mockito.Mockito.*;
|
|
@ExtendWith(MockitoExtension.class)
|
class OperateLogControllerTest {
|
@Mock private OperateLogService logService;
|
@Mock private AdminUserService userService;
|
@InjectMocks private OperateLogController controller;
|
|
@Test
|
void pageResolvesNamesInOneBatchAndKeepsTotal() {
|
var request = new OperateLogPageReqVO();
|
when(logService.getOperateLogPage(request)).thenReturn(new PageResult<>(
|
List.of(log(1L, 2), log(1L, 2), log(2L, 2)), 30L));
|
when(userService.getUserMap(Set.of(1L, 2L))).thenReturn(Map.of(
|
1L, user(1L, "超级管理员", "admin"), 2L, user(2L, "", "operator")));
|
|
var result = controller.pageOperateLog(request).getData();
|
assertEquals(30L, result.getTotal());
|
assertEquals(List.of("超级管理员", "超级管理员", "operator"),
|
result.getList().stream().map(OperateLogRespVO::getUserName).toList());
|
verify(userService, times(1)).getUserMap(Set.of(1L, 2L));
|
}
|
|
@Test
|
void detailResolvesNameWithoutTranslationAspect() {
|
when(logService.getOperateLog(9L)).thenReturn(log(1L, 2));
|
when(userService.getUserMap(Set.of(1L))).thenReturn(Map.of(1L, user(1L, "操作员", "operator")));
|
assertEquals("操作员", controller.getOperateLog(9L).getData().getUserName());
|
}
|
|
@Test
|
void missingAccountShowsOriginalId() {
|
when(logService.getOperateLog(9L)).thenReturn(log(88L, 2));
|
when(userService.getUserMap(Set.of(88L))).thenReturn(Map.of());
|
var response = controller.getOperateLog(9L).getData();
|
assertEquals(88L, response.getUserId());
|
assertEquals("用户(编号:88)", response.getUserName());
|
}
|
|
@Test
|
void memberAndMissingOperatorDoNotResolveAdminWithSameId() {
|
var request = new OperateLogPageReqVO();
|
when(logService.getOperateLogPage(request)).thenReturn(new PageResult<>(
|
List.of(log(1L, 1), log(null, 2)), 2L));
|
var responses = controller.pageOperateLog(request).getData().getList();
|
assertEquals("会员(编号:1)", responses.get(0).getUserName());
|
assertEquals("未知操作人", responses.get(1).getUserName());
|
verifyNoInteractions(userService);
|
}
|
|
@Test
|
void absentLogStillReturnsNull() {
|
assertNull(controller.getOperateLog(99L).getData());
|
verifyNoInteractions(userService);
|
}
|
|
@Test
|
void exportUsesResolvedName() throws Exception {
|
var request = new OperateLogPageReqVO();
|
var response = mock(HttpServletResponse.class);
|
when(logService.getOperateLogPage(request)).thenReturn(new PageResult<>(List.of(log(1L, 2)), 1L));
|
when(userService.getUserMap(Set.of(1L))).thenReturn(Map.of(1L, user(1L, "导出操作员", "operator")));
|
try (var excel = mockStatic(ExcelUtils.class)) {
|
controller.exportOperateLog(response, request);
|
assertEquals(PageParam.PAGE_SIZE_NONE, request.getPageSize());
|
excel.verify(() -> ExcelUtils.write(eq(response), eq("操作日志.xls"), eq("数据列表"),
|
eq(OperateLogRespVO.class), argThat(rows -> rows.size() == 1
|
&& "导出操作员".equals(((OperateLogRespVO) rows.get(0)).getUserName()))));
|
}
|
}
|
|
private static OperateLogDO log(Long userId, Integer userType) {
|
var log = new OperateLogDO();
|
log.setId(9L);
|
log.setUserId(userId);
|
log.setUserType(userType);
|
return log;
|
}
|
|
private static AdminUserDO user(Long id, String nickname, String username) {
|
return AdminUserDO.builder().id(id).nickname(nickname).username(username).build();
|
}
|
}
|