test: 添加SysRoleHandler单元测试

- 测试角色Handler的13个方法
- 覆盖查询、创建、更新、删除、恢复等功能
- 使用Mockito模拟Service层依赖
- 使用StepVerifier验证响应式流
This commit is contained in:
张翔
2026-03-14 16:32:25 +08:00
parent a1bb6f4fa0
commit 55301b78ae
@@ -0,0 +1,279 @@
package cn.novalon.manage.sys.handler.role;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.sys.core.service.ISysRoleService;
import cn.novalon.manage.sys.dto.request.RoleCreateRequest;
import cn.novalon.manage.sys.dto.request.RoleUpdateRequest;
import cn.novalon.manage.sys.core.command.CreateRoleCommand;
import cn.novalon.manage.sys.core.command.UpdateRoleCommand;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.reactive.function.server.MockServerRequest;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import java.time.LocalDateTime;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class SysRoleHandlerTest {
@Mock
private ISysRoleService roleService;
private SysRoleHandler roleHandler;
private SysRole testRole;
@BeforeEach
void setUp() {
roleHandler = new SysRoleHandler(roleService);
testRole = new SysRole();
testRole.setId(1L);
testRole.setRoleName("ADMIN");
testRole.setRoleKey("admin");
testRole.setRoleSort(1);
testRole.setStatus(1);
testRole.setCreatedAt(LocalDateTime.now());
testRole.setUpdatedAt(LocalDateTime.now());
}
@Test
void testGetAllRoles() {
when(roleService.findAll()).thenReturn(Flux.just(testRole));
ServerRequest request = MockServerRequest.builder().build();
Mono<ServerResponse> response = roleHandler.getAllRoles(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).findAll();
}
@Test
void testGetRoleCount() {
when(roleService.count()).thenReturn(Mono.just(5L));
ServerRequest request = MockServerRequest.builder().build();
Mono<ServerResponse> response = roleHandler.getRoleCount(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).count();
}
@Test
void testGetRoleByName() {
when(roleService.findByRoleName("ADMIN")).thenReturn(Mono.just(testRole));
ServerRequest request = MockServerRequest.builder()
.pathVariable("roleName", "ADMIN")
.build();
Mono<ServerResponse> response = roleHandler.getRoleByName(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).findByRoleName("ADMIN");
}
@Test
void testGetRoleByName_NotFound() {
when(roleService.findByRoleName("UNKNOWN")).thenReturn(Mono.empty());
ServerRequest request = MockServerRequest.builder()
.pathVariable("roleName", "UNKNOWN")
.build();
Mono<ServerResponse> response = roleHandler.getRoleByName(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.NOT_FOUND)
.verifyComplete();
verify(roleService).findByRoleName("UNKNOWN");
}
@Test
void testCheckNameExists() {
when(roleService.existsByRoleName("ADMIN")).thenReturn(Mono.just(true));
ServerRequest request = MockServerRequest.builder()
.queryParam("name", "ADMIN")
.build();
Mono<ServerResponse> response = roleHandler.checkNameExists(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).existsByRoleName("ADMIN");
}
@Test
void testGetRoleById() {
when(roleService.findById(1L)).thenReturn(Mono.just(testRole));
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "1")
.build();
Mono<ServerResponse> response = roleHandler.getRoleById(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).findById(1L);
}
@Test
void testGetRoleById_NotFound() {
when(roleService.findById(999L)).thenReturn(Mono.empty());
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "999")
.build();
Mono<ServerResponse> response = roleHandler.getRoleById(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.NOT_FOUND)
.verifyComplete();
verify(roleService).findById(999L);
}
@Test
void testCreateRole() {
RoleCreateRequest createRequest = new RoleCreateRequest();
createRequest.setRoleName("NEW_ROLE");
createRequest.setRoleKey("new_role");
createRequest.setRoleSort(2);
createRequest.setStatus(1);
when(roleService.createRole(any(CreateRoleCommand.class))).thenReturn(Mono.just(testRole));
ServerRequest request = MockServerRequest.builder()
.body(Mono.just(createRequest));
Mono<ServerResponse> response = roleHandler.createRole(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.CREATED)
.verifyComplete();
verify(roleService).createRole(any(CreateRoleCommand.class));
}
@Test
void testUpdateRole() {
RoleUpdateRequest updateRequest = new RoleUpdateRequest();
updateRequest.setRoleName("UPDATED_ROLE");
updateRequest.setRoleKey("updated_role");
updateRequest.setRoleSort(3);
updateRequest.setStatus(0);
when(roleService.updateRole(any(UpdateRoleCommand.class))).thenReturn(Mono.just(testRole));
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "1")
.body(Mono.just(updateRequest));
Mono<ServerResponse> response = roleHandler.updateRole(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).updateRole(any(UpdateRoleCommand.class));
}
@Test
void testDeleteRole() {
when(roleService.logicalDeleteRole(1L)).thenReturn(Mono.just(testRole));
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "1")
.build();
Mono<ServerResponse> response = roleHandler.deleteRole(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).logicalDeleteRole(1L);
}
@Test
void testDeleteRole_NotFound() {
when(roleService.logicalDeleteRole(999L)).thenReturn(Mono.empty());
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "999")
.build();
Mono<ServerResponse> response = roleHandler.deleteRole(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.NOT_FOUND)
.verifyComplete();
verify(roleService).logicalDeleteRole(999L);
}
@Test
void testRestoreRole() {
when(roleService.restoreRole(1L)).thenReturn(Mono.just(testRole));
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "1")
.build();
Mono<ServerResponse> response = roleHandler.restoreRole(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.OK)
.verifyComplete();
verify(roleService).restoreRole(1L);
}
@Test
void testRestoreRole_NotFound() {
when(roleService.restoreRole(999L)).thenReturn(Mono.empty());
ServerRequest request = MockServerRequest.builder()
.pathVariable("id", "999")
.build();
Mono<ServerResponse> response = roleHandler.restoreRole(request);
StepVerifier.create(response)
.expectNextMatches(serverResponse ->
serverResponse.statusCode() == HttpStatus.NOT_FOUND)
.verifyComplete();
verify(roleService).restoreRole(999L);
}
}