Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haga lo que hicimos: pruebas con bases de datos

package med.voll.api.domain.consulta.validaciones;

import jakarta.validation.ValidationException;
import med.voll.api.domain.consulta.dto.DatosAgendarConsulta;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import java.time.LocalDateTime;

import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;

class HorarioDeFuncionamientoClinicaTest {

    private HorarioDeFuncionamientoClinica validador;

    @BeforeEach
    void setUp() {
        validador = new HorarioDeFuncionamientoClinica();
    }

    @Test
    void validar_fechaDentroDelHorario_noLanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 10, 0)); // Miércoles 10:00 AM

        // Act & Assert
        assertDoesNotThrow(() -> validador.validar(datos));
    }

    @Test
    void validar_fechaAntesDeApertura_lanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 6, 0)); // Miércoles 6:00 AM

        // Act & Assert
        assertThrows(ValidationException.class, () -> validador.validar(datos));
    }

    @Test
    void validar_fechaDespuesDeCierre_lanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 20, 0)); // Miércoles 8:00 PM

        // Act & Assert
        assertThrows(ValidationException.class, () -> validador.validar(datos));
    }

    @Test
    void validar_fechaEnDomingo_lanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 19, 10, 0)); // Domingo 10:00 AM

        // Act & Assert
        assertThrows(ValidationException.class, () -> validador.validar(datos));
    }

    @Test
    void validar_fechaNula_lanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(null);

        // Act & Assert
        assertThrows(ValidationException.class, () -> validador.validar(datos));
    }

    @Test
    void validar_fechaExactamenteHoraDeApertura_noLanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 7, 0)); // Lunes 7:00 AM

        // Act & Assert
        assertDoesNotThrow(() -> validador.validar(datos));
    }
    @Test
    void validar_fechaExactamenteHoraDeCierre_noLanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 19, 0)); // Lunes 7:00 PM

        // Act & Assert
        assertDoesNotThrow(() -> validador.validar(datos));
    }
    @Test
    void validar_fechaEnElPasado_noLanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2020, 1, 15, 10, 0)); // Miércoles en el pasado

        // Act & Assert
        assertDoesNotThrow(() -> validador.validar(datos));
    }

    @Test
    void validar_fechaInmediatamenteDespuesDeApertura_noLanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 7, 1)); // Lunes 7:01 AM

        // Act & Assert
        assertDoesNotThrow(() -> validador.validar(datos));
    }

    @Test
    void validar_fechaInmediatamenteDespuesDeCierre_lanzaExcepcion() {
        // Arrange
        DatosAgendarConsulta datos = Mockito.mock(DatosAgendarConsulta.class);
        Mockito.when(datos.fecha()).thenReturn(LocalDateTime.of(2025, 1, 15, 19, 1)); // Lunes 7:01 PM

        // Act & Assert
        assertThrows(ValidationException.class, () -> validador.validar(datos));
    }

}

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad