Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula


```@Component
public class ValidadorHorarioConAnticipacion implements ValidadorCancelamientoDeConsulta {
 
@Autowired
private ConsultaRepository repository;
 
@Override
public void validar(DatosCancelamientoConsulta datos) {
    var consulta = repository.getReferenceById(datos.idConsulta());
    var ahora = LocalDateTime.now();
    var diferenciaEnHoras = Duration.between(ahora, consulta.getData()).toHours();
 
    if (diferenciaEnHoras < 24) {
        throw new ValidacionException("¡La consulta solo puede ser cancelada con anticipación mínima de 24 horas!");
    }
}
}

1 respuesta

Hola Justin,

Parece que estás trabajando en una clase de validación para cancelar consultas en tu aplicación Spring Boot. La implementación que compartiste verifica si una consulta puede ser cancelada con al menos 24 horas de anticipación. Déjame darte algunos consejos para asegurarte de que tu código funcione correctamente:

  1. Asegúrate de que ConsultaRepository esté correctamente configurado: Verifica que el ConsultaRepository esté correctamente inyectado y que tenga el método getReferenceById implementado adecuadamente para obtener la consulta por su ID.

  2. Manejo de excepciones: La excepción ValidacionException que estás lanzando debe estar definida en tu proyecto. Asegúrate de que esta excepción sea manejada correctamente en la capa de presentación para que el usuario reciba un mensaje claro.

  3. Pruebas unitarias: Sería útil crear pruebas unitarias para esta clase. Puedes usar JUnit y Mockito para simular el comportamiento del ConsultaRepository y verificar que la excepción se lanza correctamente cuando la diferencia es menor a 24 horas.

  4. Formato de fecha y hora: Asegúrate de que el formato de fecha y hora (LocalDateTime) sea consistente en toda tu aplicación para evitar problemas de comparación.

Un ejemplo de prueba unitaria podría ser:

@Test
public void testValidar_ConsultaConMenosDe24HorasDebeLanzarExcepcion() {
    // Configurar el mock del repositorio
    Consulta consulta = new Consulta();
    consulta.setData(LocalDateTime.now().plusHours(23));
    when(repository.getReferenceById(anyLong())).thenReturn(consulta);

    DatosCancelamientoConsulta datos = new DatosCancelamientoConsulta(1L);

    // Verificar que se lanza la excepción
    assertThrows(ValidacionException.class, () -> {
        validador.validar(datos);
    });
}

Espero que estos consejos te sean útiles. ¡Espero haber ayudado y buenos estudios!