From d3935cfb5831eee89b31338d882cd905ac17f62a Mon Sep 17 00:00:00 2001 From: clivissonjose Date: Mon, 8 Sep 2025 23:05:34 -0300 Subject: [PATCH] fix: consertando StudentServiceTest --- .../student/service/StudentServiceTest.java | 240 ++++++++---------- 1 file changed, 103 insertions(+), 137 deletions(-) diff --git a/backend/src/test/java/com/va2es/backend/student/service/StudentServiceTest.java b/backend/src/test/java/com/va2es/backend/student/service/StudentServiceTest.java index 7ba9837..cbd8f63 100644 --- a/backend/src/test/java/com/va2es/backend/student/service/StudentServiceTest.java +++ b/backend/src/test/java/com/va2es/backend/student/service/StudentServiceTest.java @@ -23,7 +23,6 @@ import jakarta.persistence.EntityNotFoundException; - import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; @@ -38,58 +37,34 @@ public class StudentServiceTest { private UserRepository userRepository; @Autowired - private StudentService studentService; - - @Test - public void deveCriarEstudanteComSucesso() { - // cria e salva o usuário - User user = new User( - "user@test.com", - "password123", - UserRole.ADMIN, - "João de Teste" - ); - User savedUser = userRepository.save(user); - - // cria DTO do estudante - StudentRequestDTO dto = new StudentRequestDTO(); - dto.fullName = "João Silva"; - dto.birthDate = LocalDate.of(2000, 1, 1); - dto.cpf = "12345678900"; - dto.phone = "9999999999"; - dto.course = "Ciência da Computação"; - dto.currentPeriod = 4; - dto.academicSummary = "Bom aluno"; - dto.userId = savedUser.getId(); - - // executa service - StudentResponseDTO response = studentService.create(dto); - - // validações - assertNotNull(response); - assertEquals("João Silva", response.fullName); - assertEquals("12345678900", response.cpf); - - // verifica persistência no banco - assertTrue(studentRepository.existsByCpf("12345678900")); - } - + private StudentService studentService; + @Test - public void deveLancarExcecaoQuandoUsuarioNaoExistir() { + public void deveCriarEstudanteComSucesso() { + // cria e salva o usuário + User user = new User( + "user@test.com", + "password123", + UserRole.ADMIN, + "João de Teste" + ); + User savedUser = userRepository.save(user); + + // cria DTO do estudante StudentRequestDTO dto = new StudentRequestDTO(); - dto.fullName = "Carlos Souza"; - dto.birthDate = LocalDate.of(2002, 3, 3); - dto.cpf = "98765432100"; - dto.phone = "6666666668"; - dto.course = "Medicina"; - dto.currentPeriod = 1; - dto.academicSummary = "Resumo"; - dto.userId = 999L; // ID inexistente + dto.setFullName("João Silva"); + dto.setBirthDate(LocalDate.of(2000, 1, 1)); + dto.setCpf("12345678900"); + dto.setPhone("9999999999"); + dto.setCourse("Ciência da Computação"); + dto.setCurrentPeriod(4); + dto.setAcademicSummary("Bom aluno"); + dto.setUserId(savedUser.getId()); // executa service StudentResponseDTO response = studentService.create(dto); - // validações - USANDO GETTERS + // validações assertNotNull(response); assertEquals("João Silva", response.getFullName()); assertEquals("12345678900", response.getCpf()); @@ -104,7 +79,7 @@ public void deveLancarExcecaoQuandoUsuarioNaoExistir() { dto.setFullName("Carlos Souza"); dto.setBirthDate(LocalDate.of(2002, 3, 3)); dto.setCpf("98765432100"); - dto.setPhone("666666666"); + dto.setPhone("6666666668"); dto.setCourse("Medicina"); dto.setCurrentPeriod(1); dto.setAcademicSummary("Resumo"); @@ -113,28 +88,27 @@ public void deveLancarExcecaoQuandoUsuarioNaoExistir() { assertThrows(EntityNotFoundException.class, () -> studentService.create(dto)); } - @Test public void deletarEstudanteComSucesso() { // cria e salva o usuário User user = new User( "user@test2.com", "password123", - UserRole.ADMIN, // admin consegue deletar qualquer estudante + UserRole.ADMIN, "João de Teste" ); User savedUser = userRepository.save(user); - // cria DTO do estudante - StudentRequestDTO dto = new StudentRequestDTO(); - dto.fullName = "João Silva"; - dto.birthDate = LocalDate.of(2000, 1, 1); - dto.cpf = "12345678880"; - dto.phone = "9999999999"; - dto.course = "Ciência da Computação"; - dto.currentPeriod = 4; - dto.academicSummary = "Bom aluno"; - dto.userId = savedUser.getId(); + // cria DTO do estudante + StudentRequestDTO dto = new StudentRequestDTO(); + dto.setFullName("João Silva"); + dto.setBirthDate(LocalDate.of(2000, 1, 1)); + dto.setCpf("12345678880"); + dto.setPhone("9999999999"); + dto.setCourse("Ciência da Computação"); + dto.setCurrentPeriod(4); + dto.setAcademicSummary("Bom aluno"); + dto.setUserId(savedUser.getId()); StudentResponseDTO response = studentService.create(dto); @@ -147,7 +121,6 @@ public void deletarEstudanteComSucesso() { SecurityContextHolder.getContext().setAuthentication(auth); String cpf = response.getCpf(); - assertTrue(studentRepository.existsByCpf(cpf)); // deleta o estudante @@ -155,51 +128,48 @@ public void deletarEstudanteComSucesso() { // verifica se foi deletado assertTrue(!studentRepository.existsByCpf(cpf)); - } @Test public void pegarEstudantePorIdComSucesso() { - // cria e salva o usuário - User user = new User( - "user@test6.com", - "password123", - UserRole.ADMIN, - "João de Teste" - ); - User savedUser = userRepository.save(user); - - // cria DTO do estudante - StudentRequestDTO dto = new StudentRequestDTO(); - dto.fullName = "João Silva"; - dto.birthDate = LocalDate.of(2000, 1, 1); - dto.cpf = "12345600880"; - dto.phone = "9999999999"; - dto.course = "Ciência da Computação"; - dto.currentPeriod = 4; - dto.academicSummary = "Bom aluno"; - dto.userId = savedUser.getId(); - - StudentResponseDTO response = studentService.create(dto); - - assertNotNull(response); - assertEquals("João Silva", response.fullName); - - // busca o estudante por ID - StudentResponseDTO found = studentService.findById(response.id); - assertNotNull(found); - assertEquals(response.id, found.id); - assertEquals(response.fullName, found.fullName); - assertEquals(response.cpf, found.cpf); + // cria e salva o usuário + User user = new User( + "user@test6.com", + "password123", + UserRole.ADMIN, + "João de Teste" + ); + User savedUser = userRepository.save(user); + + // cria DTO do estudante + StudentRequestDTO dto = new StudentRequestDTO(); + dto.setFullName("João Silva"); + dto.setBirthDate(LocalDate.of(2000, 1, 1)); + dto.setCpf("12345600880"); + dto.setPhone("9999999999"); + dto.setCourse("Ciência da Computação"); + dto.setCurrentPeriod(4); + dto.setAcademicSummary("Bom aluno"); + dto.setUserId(savedUser.getId()); + + StudentResponseDTO response = studentService.create(dto); + + assertNotNull(response); + assertEquals("João Silva", response.getFullName()); + // busca o estudante por ID + StudentResponseDTO found = studentService.findById(response.getId()); + assertNotNull(found); + assertEquals(response.getId(), found.getId()); + assertEquals(response.getFullName(), found.getFullName()); + assertEquals(response.getCpf(), found.getCpf()); } - - @Test // <<-- Faltava esta anotação + @Test public void atualizarEstudanteComSucesso() { // cria e salva o usuário User user = new User( - "user@test7.com", // Email diferente para evitar conflito + "user@test7.com", "password123", UserRole.ADMIN, "João de Teste" @@ -208,14 +178,14 @@ public void atualizarEstudanteComSucesso() { // cria DTO do estudante StudentRequestDTO dto = new StudentRequestDTO(); - dto.fullName = "João Silva"; - dto.birthDate = LocalDate.of(2000, 1, 1); - dto.cpf = "12345678955"; - dto.phone = "9999999990"; - dto.course = "Ciência da Computação"; - dto.currentPeriod = 4; - dto.academicSummary = "Bom aluno"; - dto.userId = savedUser.getId(); + dto.setFullName("João Silva"); + dto.setBirthDate(LocalDate.of(2000, 1, 1)); + dto.setCpf("12345678955"); + dto.setPhone("9999999990"); + dto.setCourse("Ciência da Computação"); + dto.setCurrentPeriod(4); + dto.setAcademicSummary("Bom aluno"); + dto.setUserId(savedUser.getId()); StudentResponseDTO response = studentService.create(dto); @@ -237,39 +207,35 @@ public void atualizarEstudanteComSucesso() { assertEquals("Letras", updatedResponse.getCourse()); } -@Test -public void naoDevePermitirDeletarEstudanteSemAutenticacao() { - // cria e salva o usuário - User user = new User( - "user@test3.com", - "password123", - UserRole.ADMIN, - "João de Teste" - ); - User savedUser = userRepository.save(user); - - // cria DTO do estudante - StudentRequestDTO dto = new StudentRequestDTO(); - dto.fullName = "Maria Silva"; - dto.birthDate = LocalDate.of(2001, 2, 2); - dto.cpf = "12312312399"; - dto.phone = "9998887077"; - dto.course = "Engenharia"; - dto.currentPeriod = 3; - dto.academicSummary = "Resumo"; - dto.userId = savedUser.getId(); - - StudentResponseDTO response = studentService.create(dto); - - // 🔑 NÃO setamos o SecurityContextHolder aqui → simula usuário não autenticado - - // espera AccessDeniedException - assertThrows( - org.springframework.security.access.AccessDeniedException.class, - () -> studentService.delete(response.id) - ); -} + @Test + public void naoDevePermitirDeletarEstudanteSemAutenticacao() { + // cria e salva o usuário + User user = new User( + "user@test3.com", + "password123", + UserRole.ADMIN, + "João de Teste" + ); + User savedUser = userRepository.save(user); + // cria DTO do estudante + StudentRequestDTO dto = new StudentRequestDTO(); + dto.setFullName("Maria Silva"); + dto.setBirthDate(LocalDate.of(2001, 2, 2)); + dto.setCpf("12312312399"); + dto.setPhone("9998887077"); + dto.setCourse("Engenharia"); + dto.setCurrentPeriod(3); + dto.setAcademicSummary("Resumo"); + dto.setUserId(savedUser.getId()); -} + StudentResponseDTO response = studentService.create(dto); + + // 🔑 NÃO setamos o SecurityContextHolder aqui → simula usuário não autenticado + assertThrows( + org.springframework.security.access.AccessDeniedException.class, + () -> studentService.delete(response.getId()) + ); + } +}