test: 添加SysRoleHandler单元测试
- 测试角色Handler的13个方法 - 覆盖查询、创建、更新、删除、恢复等功能 - 使用Mockito模拟Service层依赖 - 使用StepVerifier验证响应式流
This commit is contained in:
+279
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user