test(sys): 迁移 manage-sys 模块测试代码(任务 T2.2)

- 删除 novalon manage-sys 现有测试文件
- 从 gym-manage 复制测试文件并替换包名 cn.novalon.gym.manage → cn.novalon.manage
- 编译验证通过
This commit is contained in:
张翔
2026-04-27 14:08:51 +08:00
parent cf067dccc3
commit a71bb7dd97
51 changed files with 88 additions and 36 deletions
@@ -25,7 +25,7 @@ class AuditLogTest {
assertNull(auditLog.getEntityId());
assertNull(auditLog.getOperator());
assertNull(auditLog.getOperationType());
assertNull(auditLog.getOperationTime());
assertNotNull(auditLog.getOperationTime());
assertNull(auditLog.getDescription());
assertNull(auditLog.getIpAddress());
assertNull(auditLog.getUserAgent());
@@ -41,6 +41,12 @@ class AuditLogServiceTest {
@BeforeEach
void setUp() {
auditLogService = new AuditLogService(auditLogRepository, auditLogExecutor);
lenient().doAnswer(invocation -> {
Runnable task = invocation.getArgument(0);
task.run();
return null;
}).when(auditLogExecutor).execute(any(Runnable.class));
}
@Test
@@ -1,5 +1,6 @@
package cn.novalon.manage.sys.config;
import cn.novalon.manage.sys.audit.OperationLogWebFilter;
import cn.novalon.manage.sys.security.JwtAuthenticationFilter;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -16,6 +17,9 @@ class SecurityConfigTest {
@Mock
private JwtAuthenticationFilter jwtAuthenticationFilter;
@Mock
private OperationLogWebFilter operationLogWebFilter;
@Mock
private Environment environment;
@@ -23,7 +27,7 @@ class SecurityConfigTest {
@BeforeEach
void setUp() {
securityConfig = new SecurityConfig(jwtAuthenticationFilter, environment);
securityConfig = new SecurityConfig(jwtAuthenticationFilter, operationLogWebFilter, environment);
}
@Test
@@ -59,7 +59,7 @@ class SysUserTest {
assertNotNull(firstDeleteTime);
assertNotNull(secondDeleteTime);
assertNotEquals(firstDeleteTime, secondDeleteTime);
assertEquals(firstDeleteTime, secondDeleteTime);
}
@Test
@@ -43,6 +43,7 @@ class OperationLogServiceTest {
testLog.setDuration(100L);
testLog.setIp("192.168.1.1");
testLog.setStatus("1");
testLog.setCreatedAt(LocalDateTime.now());
}
@Test
@@ -1,5 +1,6 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import cn.novalon.manage.sys.core.domain.SysConfig;
import cn.novalon.manage.sys.core.repository.ISysConfigRepository;
import org.junit.jupiter.api.BeforeEach;
@@ -26,13 +27,16 @@ class SysConfigServiceTest {
@Mock
private ISysConfigRepository repository;
@Mock
private IAuditLogService auditLogService;
private SysConfigService configService;
private SysConfig testConfig;
@BeforeEach
void setUp() {
configService = new SysConfigService(repository);
configService = new SysConfigService(repository, auditLogService);
testConfig = new SysConfig();
testConfig.setId(1L);
@@ -110,11 +114,13 @@ class SysConfigServiceTest {
@Test
void testDeleteById() {
when(repository.findById(1L)).thenReturn(Mono.just(testConfig));
when(repository.deleteByIdAndDeletedAtIsNull(1L)).thenReturn(Mono.empty());
StepVerifier.create(configService.deleteById(1L))
.verifyComplete();
verify(repository).findById(1L);
verify(repository).deleteByIdAndDeletedAtIsNull(1L);
}
@@ -1,5 +1,6 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import cn.novalon.manage.sys.core.domain.SysDictType;
import cn.novalon.manage.sys.core.repository.ISysDictTypeRepository;
import org.junit.jupiter.api.BeforeEach;
@@ -23,12 +24,15 @@ class SysDictTypeServiceTest {
@Mock
private ISysDictTypeRepository repository;
@Mock
private IAuditLogService auditLogService;
private SysDictTypeService dictTypeService;
private SysDictType testDictType;
@BeforeEach
void setUp() {
dictTypeService = new SysDictTypeService(repository);
dictTypeService = new SysDictTypeService(repository, auditLogService);
testDictType = new SysDictType();
testDictType.setId(1L);
@@ -93,6 +97,7 @@ class SysDictTypeServiceTest {
@Test
void testDeleteById() {
when(repository.findById(1L)).thenReturn(Mono.just(testDictType));
when(repository.deleteByIdAndDeletedAtIsNull(1L)).thenReturn(Mono.empty());
Mono<Void> result = dictTypeService.deleteById(1L);
@@ -100,6 +105,7 @@ class SysDictTypeServiceTest {
StepVerifier.create(result)
.verifyComplete();
verify(repository).findById(1L);
verify(repository).deleteByIdAndDeletedAtIsNull(1L);
}
}
@@ -4,6 +4,7 @@ import cn.novalon.manage.sys.core.domain.SysMenu;
import cn.novalon.manage.sys.core.repository.ISysMenuRepository;
import cn.novalon.manage.sys.core.command.CreateMenuCommand;
import cn.novalon.manage.sys.core.command.UpdateMenuCommand;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -25,12 +26,15 @@ class SysMenuServiceTest {
@Mock
private ISysMenuRepository menuRepository;
@Mock
private IAuditLogService auditLogService;
private SysMenuService menuService;
private SysMenu testMenu;
@BeforeEach
void setUp() {
menuService = new SysMenuService(menuRepository);
menuService = new SysMenuService(menuRepository, auditLogService);
testMenu = new SysMenu();
testMenu.setId(1L);
@@ -129,7 +133,8 @@ class SysMenuServiceTest {
@Test
void testUpdateMenu() {
when(menuRepository.save(any(SysMenu.class))).thenReturn(Mono.just(testMenu));
when(menuRepository.findById(1L)).thenReturn(Mono.just(testMenu));
when(menuRepository.update(any(SysMenu.class))).thenReturn(Mono.just(testMenu));
Mono<SysMenu> result = menuService.updateMenu(testMenu);
@@ -138,7 +143,8 @@ class SysMenuServiceTest {
menu.getUpdatedAt() != null)
.verifyComplete();
verify(menuRepository).save(any(SysMenu.class));
verify(menuRepository).findById(1L);
verify(menuRepository).update(any(SysMenu.class));
}
@Test
@@ -147,7 +153,7 @@ class SysMenuServiceTest {
1L, 0L, "系统管理(更新)", "M", 1, "system", "system:manage", 1);
when(menuRepository.findById(1L)).thenReturn(Mono.just(testMenu));
when(menuRepository.save(any(SysMenu.class))).thenReturn(Mono.just(testMenu));
when(menuRepository.update(any(SysMenu.class))).thenReturn(Mono.just(testMenu));
Mono<SysMenu> result = menuService.updateMenu(command);
@@ -157,7 +163,7 @@ class SysMenuServiceTest {
.verifyComplete();
verify(menuRepository).findById(1L);
verify(menuRepository).save(any(SysMenu.class));
verify(menuRepository).update(any(SysMenu.class));
}
@Test
@@ -200,7 +206,7 @@ class SysMenuServiceTest {
updatedMenu.setUpdatedAt(LocalDateTime.now());
when(menuRepository.findById(1L)).thenReturn(Mono.just(existingMenu));
when(menuRepository.save(any(SysMenu.class))).thenReturn(Mono.just(updatedMenu));
when(menuRepository.update(any(SysMenu.class))).thenReturn(Mono.just(updatedMenu));
UpdateMenuCommand command = new UpdateMenuCommand(
1L, null, null, null, null, null, null, null);
@@ -210,7 +216,7 @@ class SysMenuServiceTest {
.verifyComplete();
verify(menuRepository).findById(1L);
verify(menuRepository).save(any(SysMenu.class));
verify(menuRepository).update(any(SysMenu.class));
}
@Test
@@ -237,7 +243,7 @@ class SysMenuServiceTest {
updatedMenu.setUpdatedAt(LocalDateTime.now());
when(menuRepository.findById(1L)).thenReturn(Mono.just(existingMenu));
when(menuRepository.save(any(SysMenu.class))).thenReturn(Mono.just(updatedMenu));
when(menuRepository.update(any(SysMenu.class))).thenReturn(Mono.just(updatedMenu));
UpdateMenuCommand command = new UpdateMenuCommand(
1L, 2L, "系统管理(更新)", "C", 2, "system_updated", "system:manage_updated", 0);
@@ -247,11 +253,12 @@ class SysMenuServiceTest {
.verifyComplete();
verify(menuRepository).findById(1L);
verify(menuRepository).save(any(SysMenu.class));
verify(menuRepository).update(any(SysMenu.class));
}
@Test
void testDeleteMenu() {
when(menuRepository.findById(1L)).thenReturn(Mono.just(testMenu));
when(menuRepository.deleteById(1L)).thenReturn(Mono.empty());
Mono<Void> result = menuService.deleteMenu(1L);
@@ -259,6 +266,7 @@ class SysMenuServiceTest {
StepVerifier.create(result)
.verifyComplete();
verify(menuRepository).findById(1L);
verify(menuRepository).deleteById(1L);
}
@@ -1,5 +1,6 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import cn.novalon.manage.common.util.StatusConstants;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.sys.core.query.SysRoleQuery;
@@ -46,13 +47,16 @@ class SysRoleServiceTest {
@Mock
private ISysRolePermissionRepository rolePermissionRepository;
@Mock
private IAuditLogService auditLogService;
private SysRoleService roleService;
private SysRole testRole;
@BeforeEach
void setUp() {
roleService = new SysRoleService(roleRepository, userService, userRoleRepository, rolePermissionRepository);
roleService = new SysRoleService(roleRepository, userService, userRoleRepository, rolePermissionRepository, auditLogService);
testRole = new SysRole();
testRole.setId(1L);
@@ -206,7 +210,7 @@ class SysRoleServiceTest {
existingRole.setStatus(StatusConstants.ENABLED);
when(roleRepository.findById(1L)).thenReturn(Mono.just(existingRole));
when(roleRepository.save(any(SysRole.class))).thenReturn(Mono.just(testRole));
when(roleRepository.updateRole(any(SysRole.class))).thenReturn(Mono.just(testRole));
cn.novalon.manage.sys.core.command.UpdateRoleCommand command =
new cn.novalon.manage.sys.core.command.UpdateRoleCommand(
@@ -218,7 +222,7 @@ class SysRoleServiceTest {
.verifyComplete();
verify(roleRepository).findById(1L);
verify(roleRepository).save(any(SysRole.class));
verify(roleRepository).updateRole(any(SysRole.class));
}
@Test
@@ -231,7 +235,7 @@ class SysRoleServiceTest {
existingRole.setStatus(StatusConstants.ENABLED);
when(roleRepository.findById(1L)).thenReturn(Mono.just(existingRole));
when(roleRepository.save(any(SysRole.class))).thenReturn(Mono.just(testRole));
when(roleRepository.updateRole(any(SysRole.class))).thenReturn(Mono.just(testRole));
cn.novalon.manage.sys.core.command.UpdateRoleCommand command =
new cn.novalon.manage.sys.core.command.UpdateRoleCommand(
@@ -243,7 +247,7 @@ class SysRoleServiceTest {
.verifyComplete();
verify(roleRepository).findById(1L);
verify(roleRepository).save(any(SysRole.class));
verify(roleRepository).updateRole(any(SysRole.class));
}
@Test
@@ -252,13 +256,15 @@ class SysRoleServiceTest {
updateRole.setId(1L);
updateRole.setRoleName("updated_admin");
when(roleRepository.save(any(SysRole.class))).thenReturn(Mono.just(testRole));
when(roleRepository.findById(1L)).thenReturn(Mono.just(testRole));
when(roleRepository.updateRole(any(SysRole.class))).thenReturn(Mono.just(testRole));
StepVerifier.create(roleService.updateRole(updateRole))
.expectNextMatches(role -> role.getUpdatedAt() != null)
.verifyComplete();
verify(roleRepository).save(any(SysRole.class));
verify(roleRepository).findById(1L);
verify(roleRepository).updateRole(any(SysRole.class));
}
@Test
@@ -1,6 +1,7 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.common.util.StatusConstants;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import cn.novalon.manage.sys.config.IntegrationTestConfig;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.sys.core.domain.SysRole;
@@ -76,6 +77,9 @@ class SysUserServiceIntegrationTest {
@Autowired
private IUserRoleRepository userRoleRepository;
@Autowired
private IAuditLogService auditLogService;
@Autowired
private R2dbcEntityTemplate r2dbcEntityTemplate;
@@ -85,7 +89,7 @@ class SysUserServiceIntegrationTest {
@BeforeEach
void setUp() {
passwordEncoder = new BCryptPasswordEncoder(12);
userService = new SysUserService(userRepository, roleRepository, userRoleRepository, passwordEncoder);
userService = new SysUserService(userRepository, roleRepository, userRoleRepository, passwordEncoder, auditLogService);
r2dbcEntityTemplate.delete(SysUser.class).all().block();
r2dbcEntityTemplate.delete(SysRole.class).all().block();
@@ -1,6 +1,8 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.common.util.StatusConstants;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import cn.novalon.manage.sys.audit.domain.AuditLog;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.sys.core.domain.UserRole;
import cn.novalon.manage.sys.core.repository.ISysUserRepository;
@@ -45,11 +47,14 @@ class SysUserServiceTest {
@Mock
private PasswordEncoder passwordEncoder;
@Mock
private IAuditLogService auditLogService;
private SysUserService userService;
@BeforeEach
void setUp() {
userService = new SysUserService(userRepository, roleRepository, userRoleRepository, passwordEncoder);
userService = new SysUserService(userRepository, roleRepository, userRoleRepository, passwordEncoder, auditLogService);
}
@Test
@@ -164,7 +169,8 @@ class SysUserServiceTest {
user.setUsername("testuser");
user.setEmail("updated@example.com");
when(userRepository.save(any(SysUser.class))).thenReturn(Mono.just(user));
when(userRepository.findById(1L)).thenReturn(Mono.just(user));
when(userRepository.update(any(SysUser.class))).thenReturn(Mono.just(user));
StepVerifier.create(userService.updateUser(user))
.expectNextMatches(updatedUser ->
@@ -173,7 +179,8 @@ class SysUserServiceTest {
)
.verifyComplete();
verify(userRepository, times(1)).save(any(SysUser.class));
verify(userRepository, times(1)).findById(1L);
verify(userRepository, times(1)).update(any(SysUser.class));
}
@Test
@@ -218,7 +225,7 @@ class SysUserServiceTest {
when(userRepository.findById(1L)).thenReturn(Mono.just(user));
when(passwordEncoder.matches("oldPassword", "$2b$12$oldPassword")).thenReturn(true);
when(passwordEncoder.encode("newPassword")).thenReturn("$2b$12$newPassword");
when(userRepository.save(any(SysUser.class))).thenAnswer(invocation -> Mono.just(invocation.getArgument(0)));
when(userRepository.update(any(SysUser.class))).thenAnswer(invocation -> Mono.just(invocation.getArgument(0)));
StepVerifier.create(userService.changePassword(1L, "oldPassword", "newPassword"))
.expectNextMatches(updatedUser ->
@@ -228,7 +235,7 @@ class SysUserServiceTest {
verify(passwordEncoder, times(1)).matches("oldPassword", "$2b$12$oldPassword");
verify(passwordEncoder, times(1)).encode("newPassword");
verify(userRepository, times(1)).save(any(SysUser.class));
verify(userRepository, times(1)).update(any(SysUser.class));
}
@Test
@@ -10,6 +10,7 @@ import cn.novalon.manage.sys.core.service.ISysMenuService;
import cn.novalon.manage.sys.core.service.ISysRoleService;
import cn.novalon.manage.sys.core.service.ISysUserService;
import cn.novalon.manage.sys.core.service.impl.SysMenuService;
import cn.novalon.manage.sys.audit.service.IAuditLogService;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
@@ -61,6 +62,9 @@ class SystemConfigRegressionTest {
@Mock
private ISysMenuRepository menuRepository;
@Mock
private IAuditLogService auditLogService;
private SysUser adminUser;
private SysUser normalUser;
private SysUser guestUser;
@@ -374,7 +378,7 @@ class SystemConfigRegressionTest {
void testAdminUser_MenuManagement() {
/* unused */
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.expectNextCount(0)
@@ -384,7 +388,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("3.2 普通用户 - 菜单访问控制")
void testNormalUser_MenuAccess() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.expectNextCount(0)
@@ -394,7 +398,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("3.3 访客用户 - 菜单访问控制")
void testGuestUser_MenuAccess() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.expectNextCount(0)
@@ -404,7 +408,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("3.4 菜单树构建 - 管理员视图")
void testMenuTree_Build_Admin() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.verifyComplete();
@@ -413,7 +417,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("3.5 权限菜单过滤 - 普通用户视图")
void testMenuFilter_NormalUser() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.expectNextCount(0)
@@ -423,7 +427,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("3.6 权限菜单过滤 - 访客视图")
void testMenuFilter_Guest() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.expectNextCount(0)
@@ -472,7 +476,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("5.2 大量菜单加载性能测试")
void testLargeMenuLoadPerformance() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
long startTime = System.currentTimeMillis();
@@ -516,7 +520,7 @@ class SystemConfigRegressionTest {
@Test
@DisplayName("6.3 菜单层级结构完整性")
void testMenuHierarchy_Integrity() {
ISysMenuService menuService = new SysMenuService(menuRepository);
ISysMenuService menuService = new SysMenuService(menuRepository, auditLogService);
StepVerifier.create(menuService.findAll())
.verifyComplete();
@@ -22,7 +22,7 @@ class IpUtilsTest {
@Test
@DisplayName("当request为null时,应返回unknown")
void getClientIp_whenRequestIsNull_shouldReturnUnknown() {
String ip = IpUtils.getClientIp(null);
String ip = IpUtils.getClientIp((ServerRequest) null);
assertEquals("unknown", ip);
}