Se corrige el test de ServiceUzyTUsuarioTests

parent c56b552e
......@@ -12,16 +12,16 @@ import java.util.stream.Collectors;
@Component
public class UzyTUsuarioMapper {
@Autowired
private ModelMapper modelMapper;
private ModelMapper mapper;
public DtoUzyTUsuario entityToDto(ModelUzyTUsuario entity) {
return modelMapper.map(entity, DtoUzyTUsuario.class);
return mapper.map(entity, DtoUzyTUsuario.class);
}
public ModelUzyTUsuario dtoToEntity(DtoUzyTUsuario dto) {
return modelMapper.map(dto, ModelUzyTUsuario.class);
return mapper.map(dto, ModelUzyTUsuario.class);
}
public List<DtoUzyTUsuario> entitiesToDtos(List<ModelUzyTUsuario> entities) {
return entities.stream()
......
......@@ -118,36 +118,85 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
@Override
public DtoUzyTUsuario editar(Long id, DtoUzyTUsuario dtoUzyTUsuario) {
try {
if (id == null || id <= 0) {
if ( id <= 0) {
throw new IllegalArgumentException("El ID del usuario debe ser válido y mayor que cero.");
}
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id).orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
//Operador ternario -> variable = condicion ? valorSiTrue : valorSiFalse;
entity.setUzytusuario_cc(dtoUzyTUsuario.getUzytusuario_cc() != null ? dtoUzyTUsuario.getUzytusuario_cc() : entity.getUzytusuario_cc());
entity.setUzytusuario_clave(dtoUzyTUsuario.getUzytusuario_clave() != null ? dtoUzyTUsuario.getUzytusuario_clave() : entity.getUzytusuario_clave());
entity.setUzytusuario_nombres(dtoUzyTUsuario.getUzytusuario_nombres() != null ? dtoUzyTUsuario.getUzytusuario_nombres() : entity.getUzytusuario_nombres());
entity.setUzytusuario_apellidos(dtoUzyTUsuario.getUzytusuario_apellidos() != null ? dtoUzyTUsuario.getUzytusuario_apellidos() : entity.getUzytusuario_apellidos());
entity.setUzytusuario_email(dtoUzyTUsuario.getUzytusuario_email() != null ? dtoUzyTUsuario.getUzytusuario_email() : entity.getUzytusuario_email());
entity.setFechaRegistro(dtoUzyTUsuario.getUzytusuario_fecharegistro() != null ? dtoUzyTUsuario.getUzytusuario_fecharegistro() : entity.getFechaRegistro());
entity.setUzytusuario_estado(dtoUzyTUsuario.getUzytusuario_estado() != null ? dtoUzyTUsuario.getUzytusuario_estado() : entity.getUzytusuario_estado());
entity.setUzytusuario_mail_incompletos(dtoUzyTUsuario.getUzytusuario_mail_incompletos() != null ? dtoUzyTUsuario.getUzytusuario_mail_incompletos() : entity.getUzytusuario_mail_incompletos());
entity.setUzytusuario_tipo_doc(dtoUzyTUsuario.getUzytusuario_tipo_doc() != null ? dtoUzyTUsuario.getUzytusuario_tipo_doc() : entity.getUzytusuario_tipo_doc());
entity.setUzytusuario_cod_senescyt(dtoUzyTUsuario.getUzytusuario_cod_senescyt() != null ? dtoUzyTUsuario.getUzytusuario_cod_senescyt() : entity.getUzytusuario_cod_senescyt());
entity.setUzytusuario_fecha_act_micuenta(dtoUzyTUsuario.getUzytusuario_fecha_act_micuenta() != null ? dtoUzyTUsuario.getUzytusuario_fecha_act_micuenta() : entity.getUzytusuario_fecha_act_micuenta());
entity.setUzytusuario_hexadecimalid(dtoUzyTUsuario.getUzytusuario_hexadecimalid() != null ? dtoUzyTUsuario.getUzytusuario_hexadecimalid() : entity.getUzytusuario_hexadecimalid());
entity.setUzytusuario_tratamiento(dtoUzyTUsuario.getUzytusuario_tratamiento() != null ? dtoUzyTUsuario.getUzytusuario_tratamiento() : entity.getUzytusuario_tratamiento());
entity.setUzytusuario_modificacion(dtoUzyTUsuario.getUzytusuario_modificacion() != null ? dtoUzyTUsuario.getUzytusuario_modificacion() : entity.getUzytusuario_modificacion());
entity.setUzytusuario_tipo_user(dtoUzyTUsuario.getUzytusuario_tipo_user() != null ? dtoUzyTUsuario.getUzytusuario_tipo_user() : entity.getUzytusuario_tipo_user());
entity.setUzytusuario_email_institucional(dtoUzyTUsuario.getUzytusuario_email_institucional() != null ? dtoUzyTUsuario.getUzytusuario_email_institucional() : entity.getUzytusuario_email_institucional());
entity.setUzytusuario_telefono_fijo(dtoUzyTUsuario.getUzytusuario_telefono_fijo() != null ? dtoUzyTUsuario.getUzytusuario_telefono_fijo() : entity.getUzytusuario_telefono_fijo());
entity.setUzytusuario_telefono_celular(dtoUzyTUsuario.getUzytusuario_telefono_celular() != null ? dtoUzyTUsuario.getUzytusuario_telefono_celular() : entity.getUzytusuario_telefono_celular());
entity.setSpriden_id(dtoUzyTUsuario.getSpriden_id() != null ? dtoUzyTUsuario.getSpriden_id() : entity.getSpriden_id());
entity.setSpriden_pidm(dtoUzyTUsuario.getSpriden_pidm() != null ? dtoUzyTUsuario.getSpriden_pidm() : entity.getSpriden_pidm());
entity.setUzytusuario_clave_tmp(dtoUzyTUsuario.getUzytusuario_clave_tmp() != null ? dtoUzyTUsuario.getUzytusuario_clave_tmp() : entity.getUzytusuario_clave_tmp());
entity.setSpbpers_name_prefix(dtoUzyTUsuario.getSpbpers_name_prefix() != null ? dtoUzyTUsuario.getSpbpers_name_prefix() : entity.getSpbpers_name_prefix());
entity.setSpbpers_sex(dtoUzyTUsuario.getSpbpers_sex() != null ? dtoUzyTUsuario.getSpbpers_sex() : entity.getSpbpers_sex());
ModelUzyTUsuario updatedEntity = daoUzyTUsuario.save(entity);
return mapper.entityToDto(updatedEntity);
if (!daoUzyTUsuario.existsById(id)) {
throw new ResourceNotFoundException("El usuario con ID " + id + " no fue encontrado.");
}
ModelUzyTUsuario entity = daoUzyTUsuario.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + id));
if (dtoUzyTUsuario.getUzytusuario_nombres() != null) {
entity.setUzytusuario_nombres(dtoUzyTUsuario.getUzytusuario_nombres());
}
if (dtoUzyTUsuario.getUzytusuario_apellidos() != null) {
entity.setUzytusuario_apellidos(dtoUzyTUsuario.getUzytusuario_apellidos());
}
if (dtoUzyTUsuario.getUzytusuario_email() != null) {
entity.setUzytusuario_email(dtoUzyTUsuario.getUzytusuario_email());
}
if (dtoUzyTUsuario.getUzytusuario_fecharegistro() != null) {
entity.setFechaRegistro(dtoUzyTUsuario.getUzytusuario_fecharegistro());
}
if (dtoUzyTUsuario.getUzytusuario_estado() != null) {
entity.setUzytusuario_estado(dtoUzyTUsuario.getUzytusuario_estado());
}
if (dtoUzyTUsuario.getUzytusuario_mail_incompletos() != null) {
entity.setUzytusuario_mail_incompletos(dtoUzyTUsuario.getUzytusuario_mail_incompletos());
}
if (dtoUzyTUsuario.getUzytusuario_tipo_doc() != null) {
entity.setUzytusuario_tipo_doc(dtoUzyTUsuario.getUzytusuario_tipo_doc());
}
if (dtoUzyTUsuario.getUzytusuario_cod_senescyt() != null) {
entity.setUzytusuario_cod_senescyt(dtoUzyTUsuario.getUzytusuario_cod_senescyt());
}
if (dtoUzyTUsuario.getUzytusuario_fecha_act_micuenta() != null) {
entity.setUzytusuario_fecha_act_micuenta(dtoUzyTUsuario.getUzytusuario_fecha_act_micuenta());
}
if (dtoUzyTUsuario.getUzytusuario_hexadecimalid() != null) {
entity.setUzytusuario_hexadecimalid(dtoUzyTUsuario.getUzytusuario_hexadecimalid());
}
if (dtoUzyTUsuario.getUzytusuario_tratamiento() != null) {
entity.setUzytusuario_tratamiento(dtoUzyTUsuario.getUzytusuario_tratamiento());
}
if (dtoUzyTUsuario.getUzytusuario_modificacion() != null) {
entity.setUzytusuario_modificacion(dtoUzyTUsuario.getUzytusuario_modificacion());
}
if (dtoUzyTUsuario.getUzytusuario_tipo_user() != null) {
entity.setUzytusuario_tipo_user(dtoUzyTUsuario.getUzytusuario_tipo_user());
}
if (dtoUzyTUsuario.getUzytusuario_email_institucional() != null) {
entity.setUzytusuario_email_institucional(dtoUzyTUsuario.getUzytusuario_email_institucional());
}
if (dtoUzyTUsuario.getUzytusuario_telefono_fijo() != null) {
entity.setUzytusuario_telefono_fijo(dtoUzyTUsuario.getUzytusuario_telefono_fijo());
}
if (dtoUzyTUsuario.getUzytusuario_telefono_celular() != null) {
entity.setUzytusuario_telefono_celular(dtoUzyTUsuario.getUzytusuario_telefono_celular());
}
if (dtoUzyTUsuario.getSpriden_id() != null) {
entity.setSpriden_id(dtoUzyTUsuario.getSpriden_id());
}
if (dtoUzyTUsuario.getSpriden_pidm() != null) {
entity.setSpriden_pidm(dtoUzyTUsuario.getSpriden_pidm());
}
if (dtoUzyTUsuario.getUzytusuario_clave_tmp() != null) {
entity.setUzytusuario_clave_tmp(dtoUzyTUsuario.getUzytusuario_clave_tmp());
}
if (dtoUzyTUsuario.getSpbpers_name_prefix() != null) {
entity.setSpbpers_name_prefix(dtoUzyTUsuario.getSpbpers_name_prefix());
}
if (dtoUzyTUsuario.getSpbpers_sex() != null) {
entity.setSpbpers_sex(dtoUzyTUsuario.getSpbpers_sex());
}
// Guardar los cambios y obtener el usuario actualizado
ModelUzyTUsuario usuarioActualizado = daoUzyTUsuario.save(entity);
// Convertir el usuario actualizado a DtoUzyTUsuario y devolverlo
return mapper.entityToDto(usuarioActualizado);
} catch (ResourceNotFoundException | IllegalArgumentException ex) {
throw ex;
} catch (Exception ex) {
......@@ -199,4 +248,5 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
throw new RuntimeException("Error al asignar perfil al usuario: " + ex.getMessage());
}
}
}
package ec.edu.espe.movilidad.MovilidadWS.Service;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTPerfilMapper;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTUsuarioMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTUsuario.ServiceUzyTUsuario;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
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.*;
import static org.hibernate.validator.internal.util.Contracts.assertNotNull;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class ServiceUzyTUsuarioTests {
@Mock
private DaoUzyTUsuario daoUzyTUsuario;
......@@ -37,9 +37,13 @@ class ServiceUzyTUsuarioTests {
@Mock
private UzyTPerfilMapper mapperPerfil;
@InjectMocks
private ServiceUzyTUsuario serviceUzyTUsuario;
@BeforeEach
void setUp() {
serviceUzyTUsuario = new ServiceUzyTUsuario(daoUzyTUsuario, daoUzyTPerfil, mapper, mapperPerfil);
}
@DisplayName("Test para listar a los usuarios por el ID")
@Test
void testListarPorID() {
......@@ -52,26 +56,65 @@ class ServiceUzyTUsuarioTests {
when(mapper.entityToDto(usuario)).thenReturn(dtoUsuario);
DtoUzyTUsuario result = serviceUzyTUsuario.ListarPorID(id);
assertEquals(id, result.getUzytusuario_id());
}
@DisplayName("Test para listar a los registros del usuario")
@DisplayName("Test para listar a los usuarios por el ID (Caso de error: ID negativo o nulo)")
@Test
void testListarPorID_CasoError_IDNegativoONulo() {
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.ListarPorID(0L));
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.ListarPorID(-1L));
}
@DisplayName("Test para listar a los usuarios por el ID (Caso de error: usuario no encontrado)")
@Test
void testListarPorID_CasoError_UsuarioNoEncontrado() {
Long id = 1L;
when(daoUzyTUsuario.findById(id)).thenReturn(Optional.empty());
assertThrows(ResourceNotFoundException.class, () -> serviceUzyTUsuario.ListarPorID(id));
}
@DisplayName("Test para listar todos los usuarios existentes (Caso exitoso)")
@Test
void testListarRegistros() {
List<ModelUzyTUsuario> usuarios = Collections.singletonList(new ModelUzyTUsuario());
void testListarRegistros_CasoExitoso() {
List<ModelUzyTUsuario> usuarios = Arrays.asList(new ModelUzyTUsuario(), new ModelUzyTUsuario());
DtoUzyTUsuario dtoUsuario = new DtoUzyTUsuario();
when(daoUzyTUsuario.findAll()).thenReturn(usuarios);
when(mapper.entitiesToDtos(usuarios)).thenReturn(Collections.singletonList(dtoUsuario));
when(mapper.entitiesToDtos(usuarios)).thenReturn(Arrays.asList(dtoUsuario, dtoUsuario));
List<DtoUzyTUsuario> result = serviceUzyTUsuario.ListarRegistros();
assertEquals(1, result.size());
assertEquals(2, result.size());
assertEquals(dtoUsuario, result.get(0));
assertEquals(dtoUsuario, result.get(1));
}
@DisplayName("Test para listar usuarios registrados - Sin resultados")
@Test
void testListarRegistros_SinResultados() {
List<ModelUzyTUsuario> usuarios = Collections.emptyList();
when(daoUzyTUsuario.findAll()).thenReturn(usuarios);
List<DtoUzyTUsuario> result = serviceUzyTUsuario.ListarRegistros();
assertTrue(result.isEmpty());
}
@DisplayName("Test para listar usuarios registrados - Excepción en el servicio")
@Test
void testListarRegistros_ExcepcionEnServicio() {
when(daoUzyTUsuario.findAll()).thenThrow(new RuntimeException("Error en el servicio"));
assertThrows(RuntimeException.class, () -> serviceUzyTUsuario.ListarRegistros());
}
@DisplayName("Test para buscar un usuario")
@DisplayName("Test para buscar usuarios por nombre (Caso exitoso)")
@Test
void testFindByUsuario() {
void testFindByUsuario_CasoExitoso() {
String usuario = "example";
ModelUzyTUsuario modelUzyTUsuario = new ModelUzyTUsuario();
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
......@@ -84,22 +127,27 @@ class ServiceUzyTUsuarioTests {
assertEquals(1, result.size());
assertEquals(dtoUzyTUsuario, result.get(0));
}
@DisplayName("Test para buscar cuando son parametos incorrectos")
@DisplayName("Test para buscar usuarios por nombre (Caso de error: nombre de usuario nulo o vacío)")
@Test
void testFindByUsuario_ResultadosVacios() {
String usuario = null; // Simular que no se proporcionaron parámetros válidos
void testFindByUsuario_CasoError_NombreNuloOVacio() {
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.findByUsuario(null));
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.findByUsuario(""));
}
// Ejecutar el método a probar
List<DtoUzyTUsuario> result = serviceUzyTUsuario.findByUsuario(usuario);
@DisplayName("Test para buscar usuarios por nombre (Caso de error: usuarios no encontrados)")
@Test
void testFindByUsuario_CasoError_UsuariosNoEncontrados() {
String usuario = "example";
// Verificar que el resultado es una lista vacía
assertNotNull(result);
assertTrue(result.isEmpty());
when(daoUzyTUsuario.findByUsuario(usuario)).thenReturn(Collections.emptyList());
assertThrows(ResourceNotFoundException.class, () -> serviceUzyTUsuario.findByUsuario(usuario));
}
@DisplayName("Test para buscar guardar un usuario")
@DisplayName("Test para guardar un nuevo usuario correctamente (Caso exitoso)")
@Test
void testGuardar() throws Exception {
void testGuardar_CasoExitoso() throws Exception {
// Datos del usuario a simular
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
dtoUzyTUsuario.setUzytusuario_nombres("NombreUsuario");
......@@ -125,78 +173,185 @@ class ServiceUzyTUsuarioTests {
assertEquals(dtoUzyTUsuario, result);
}
@DisplayName("Test para guardar un nuevo usuario - Apellido nulo (Caso de error)")
@Test
void testGuardar_ApellidoNulo() {
// Datos del usuario a simular con apellido nulo
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
dtoUzyTUsuario.setUzytusuario_nombres("NombreUsuario");
dtoUzyTUsuario.setUzytusuario_apellidos(null);
dtoUzyTUsuario.setUzytusuario_email("usuario@example.com");
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.guardar(dtoUzyTUsuario));
}
@DisplayName("Test para editar un usuario inexistente")
@DisplayName("Test para guardar un nuevo usuario - Excepción en el servicio (Caso de error)")
@Test
void testEditar_IdNoExistente() {
// Configuración de prueba
Long id = 1L;
void testGuardar_ExcepcionEnServicio() {
// Datos del usuario a simular
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
dtoUzyTUsuario.setUzytusuario_nombres("NuevoNombre");
dtoUzyTUsuario.setUzytusuario_nombres("NombreUsuario");
dtoUzyTUsuario.setUzytusuario_apellidos("ApellidosUsuario");
dtoUzyTUsuario.setUzytusuario_email("usuario@example.com");
// Simular el comportamiento del método findById con un Optional vacío
when(daoUzyTUsuario.findById(id)).thenReturn(Optional.empty());
// Convertir el objeto DtoUzyTUsuario a ModelUzyTUsuario
ModelUzyTUsuario modelUzyTUsuario = new ModelUzyTUsuario();
modelUzyTUsuario.setUzytusuario_nombres(dtoUzyTUsuario.getUzytusuario_nombres());
modelUzyTUsuario.setUzytusuario_apellidos(dtoUzyTUsuario.getUzytusuario_apellidos());
modelUzyTUsuario.setUzytusuario_email(dtoUzyTUsuario.getUzytusuario_email());
// Configurar el comportamiento esperado del mapper y el daoUzyTUsuario
when(mapper.dtoToEntity(dtoUzyTUsuario)).thenReturn(modelUzyTUsuario);
when(daoUzyTUsuario.save(modelUzyTUsuario)).thenThrow(new RuntimeException("Error en el servicio"));
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(ResourceNotFoundException.class, () -> serviceUzyTUsuario.editar(id, dtoUzyTUsuario));
assertThrows(Exception.class, () -> serviceUzyTUsuario.guardar(dtoUzyTUsuario));
}
@DisplayName("Test para asignar un perfil a un usuario")
@DisplayName("Test para editar un usuario inexistente (Caso de error)")
@Test
void testAsignarPerfilAUsuario() {
Long usuarioId = 1L;
Long perfilId = 1L;
ModelUzyTUsuario usuario = new ModelUzyTUsuario();
ModelUzyTPerfil perfil = new ModelUzyTPerfil();
when(daoUzyTUsuario.findById(usuarioId)).thenReturn(Optional.of(usuario));
when(daoUzyTPerfil.findById(perfilId)).thenReturn(Optional.of(perfil));
when(daoUzyTUsuario.save(usuario)).thenReturn(usuario);
void testEditar_UsuarioNoExiste() {
// Datos del usuario a simular
Long id = 1L;
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
dtoUzyTUsuario.setUzytusuario_nombres("NuevoNombre");
serviceUzyTUsuario.asignarPerfilAUsuario(usuarioId, perfilId);
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(ResourceNotFoundException.class, () -> serviceUzyTUsuario.editar(id, dtoUzyTUsuario));
}
assertTrue(usuario.getUzytperfils().contains(perfil));
// Prueba de error cuando no se encuentra el usuario por su ID
when(daoUzyTUsuario.findById(usuarioId)).thenReturn(Optional.empty());
@DisplayName("Test para editar un usuario - ID negativo (Caso de error)")
@Test
void testEditar_IdNegativo() {
// Datos del usuario a simular con ID negativo
Long id = -1L;
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
dtoUzyTUsuario.setUzytusuario_nombres("NuevoNombre");
try {
serviceUzyTUsuario.asignarPerfilAUsuario(usuarioId, perfilId);
fail("Debería haber lanzado una ResourceNotFoundException");
} catch (ResourceNotFoundException ex) {
assertEquals("No se encontró el usuario con ID: " + usuarioId, ex.getMessage());
}
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.editar(id, dtoUzyTUsuario));
}
@DisplayName("Test buscar los perfiles de un usuario")
@DisplayName("Test para actualizar un empleado")
@Test
void testFindPerfilesByUsuarioId() {
// Prueba exitosa de encontrar perfiles por ID de usuario
Long usuarioId = 1L;
ModelUzyTPerfil modelUzyTPerfil = new ModelUzyTPerfil();
modelUzyTPerfil.setUzytperfil_id(1L);
Set<ModelUzyTPerfil> perfiles = new HashSet<>();
perfiles.add(modelUzyTPerfil);
void testActualizarEmpleado() {
// Datos del usuario a simular
Long id = 1L;
DtoUzyTUsuario dtoUzyTUsuario = new DtoUzyTUsuario();
dtoUzyTUsuario.setUzytusuario_id(id);
dtoUzyTUsuario.setUzytusuario_nombres("NuevoNombre");
dtoUzyTUsuario.setUzytusuario_apellidos("ape");
when(daoUzyTUsuario.findPerfilesByUsuarioId(usuarioId)).thenReturn(perfiles);
when(mapperPerfil.entitiesToDtosSet(perfiles)).thenReturn(Collections.singleton(new DtoUzyTPerfil()));
// Obtener el usuario existente a través del ID
ModelUzyTUsuario usuarioExistente = new ModelUzyTUsuario();
usuarioExistente.setUzytusuario_id(id);
usuarioExistente.setUzytusuario_nombres("f");
usuarioExistente.setUzytusuario_apellidos("s");
Set<DtoUzyTPerfil> result = serviceUzyTUsuario.findPerfilesByUsuarioId(usuarioId);
// Configurar el comportamiento esperado del método findById del daoUzyTUsuario
when(daoUzyTUsuario.findById(id)).thenReturn(Optional.of(usuarioExistente));
// Configurar el comportamiento esperado del método existsById del daoUzyTUsuario
when(daoUzyTUsuario.existsById(id)).thenReturn(true);
// Configurar el comportamiento esperado del método save del daoUzyTUsuario
when(daoUzyTUsuario.save(any())).thenReturn(usuarioExistente);
// Configurar el comportamiento esperado del método entityToDto del mapper
when(mapper.entityToDto(any())).thenReturn(dtoUzyTUsuario);
// Ejecutar el método a probar
DtoUzyTUsuario result = serviceUzyTUsuario.editar(id, dtoUzyTUsuario);
// Verificar el resultado
assertNotNull(result);
assertEquals(1, result.size());
assertEquals(dtoUzyTUsuario.getUzytusuario_id(), result.getUzytusuario_id());
assertEquals(dtoUzyTUsuario.getUzytusuario_nombres(), result.getUzytusuario_nombres());
assertEquals(dtoUzyTUsuario.getUzytusuario_apellidos(), result.getUzytusuario_apellidos());
// Verificar que el método findById del daoUzyTUsuario fue llamado con el ID correcto
verify(daoUzyTUsuario).findById(id);
// Verificar que el método existsById del daoUzyTUsuario fue llamado con el ID correcto
verify(daoUzyTUsuario).existsById(id);
// Verificar que el método save del daoUzyTUsuario fue llamado con el usuario actualizado
verify(daoUzyTUsuario).save(any());
// Verificar que el método entityToDto del mapper fue llamado con el usuario actualizado
verify(mapper).entityToDto(usuarioExistente);
}
@DisplayName("Test buscar eliminar un usuario")
@Test
void testEliminar() {
// Prueba exitosa de eliminar un usuario
void testEliminar_CasoExitoso() {
// Datos del usuario a simular
Long id = 1L;
ModelUzyTUsuario modelUzyTUsuario = new ModelUzyTUsuario();
ModelUzyTUsuario usuarioExistente = new ModelUzyTUsuario();
usuarioExistente.setUzytusuario_id(id);
when(daoUzyTUsuario.findById(id)).thenReturn(Optional.of(modelUzyTUsuario));
// Configurar el comportamiento del daoUzyTUsuario para findById y delete
when(daoUzyTUsuario.findById(id)).thenReturn(Optional.of(usuarioExistente));
doNothing().when(daoUzyTUsuario).delete(usuarioExistente);
// Ejecutar el método a probar
boolean result = serviceUzyTUsuario.eliminar(id);
// Verificar que el usuario fue eliminado
assertTrue(result);
// Verificar que el método findById fue llamado
verify(daoUzyTUsuario, times(1)).findById(id);
// Verificar que el método delete fue llamado
verify(daoUzyTUsuario, times(1)).delete(usuarioExistente);
}
@Test
void testEliminar_IDNuloOMenorOIgualACero() {
// Datos del usuario a simular
Long id = null;
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.eliminar(id));
}
@Test
void testEliminar_UsuarioNoExiste() {
// Datos del usuario a simular
Long id = 1L;
// Configurar el comportamiento del daoUzyTUsuario para findById
when(daoUzyTUsuario.findById(id)).thenReturn(Optional.empty());
// Ejecutar el método a probar y verificar que se lanza una ResourceNotFoundException
assertThrows(ResourceNotFoundException.class, () -> serviceUzyTUsuario.eliminar(id));
// Verificar que el método findById fue llamado
verify(daoUzyTUsuario, times(1)).findById(id);
}
@DisplayName("Test para asignar un perfil a un usuario - Usuario o Perfil no existen (Caso de error)")
@Test
void testAsignarPerfilAUsuario_UsuarioOPerfilNoExiste() {
// Datos de usuario y perfil a simular (IDs inválidos)
Long usuarioId = 1L;
Long perfilId = 1L;
// Configurar el comportamiento del daoUzyTUsuario y daoUzyTPerfil para findById (usar lenient)
lenient().when(daoUzyTUsuario.findById(usuarioId)).thenReturn(Optional.empty());
lenient().when(daoUzyTPerfil.findById(perfilId)).thenReturn(Optional.empty());
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(ResourceNotFoundException.class, () -> serviceUzyTUsuario.asignarPerfilAUsuario(usuarioId, perfilId));
}
@DisplayName("Test para asignar un perfil a un usuario - ID negativo (Caso de error)")
@Test
void testAsignarPerfilAUsuario_IdNegativo() {
// Datos de usuario y perfil a simular (IDs negativos)
Long usuarioId = -1L;
Long perfilId = -1L;
// Ejecutar el método a probar y verificar que se lance la excepción
assertThrows(IllegalArgumentException.class, () -> serviceUzyTUsuario.asignarPerfilAUsuario(usuarioId, perfilId));
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment