Hola buen día, el repo que comparten es de otro proyecto, xq tiene los metodos:
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
class MedicoRepositoryTest {
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private EntityManager em;
@Test
@DisplayName("Deberia devolver null cuando el medico buscado existe pero no esta disponible en esa fecha")
void elegirMedicoAleatorioDisponibleEnLaFechaEscenario1() {
//given o arrange
var lunesSiguienteALas10 = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).atTime(10,0);
var medico = registrarMedico("Medico1", "medico@gmail.com", "12345", Especialidad.CARDIOLOGIA);
var paciente = registrarPaciente("Paciente1", "paciente@gmail.com", "123789");
registrarConsulta(medico, paciente, lunesSiguienteALas10);
//when o act
var medicoLibre = medicoRepository.elegirMedicoAleatorioDisponibleEnLaFecha(Especialidad.CARDIOLOGIA, lunesSiguienteALas10);
//then o assert
assertThat(medicoLibre).isNull();
}
@Test
@DisplayName("Deberia devolver medico cuando el medico buscado esta disponible en esa fecha")
void elegirMedicoAleatorioDisponibleEnLaFechaEscenario2() {
//given o arrange
var lunesSiguienteALas10 = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).atTime(10,0);
var medico = registrarMedico("Medico1", "medico@gmail.com", "12345", Especialidad.CARDIOLOGIA);
//when o act
var medicoLibre = medicoRepository.elegirMedicoAleatorioDisponibleEnLaFecha(Especialidad.CARDIOLOGIA, lunesSiguienteALas10);
//then o assert
assertThat(medicoLibre).isEqualTo(medico);
}
private void registrarConsulta(Medico medico, Paciente paciente, LocalDateTime fecha) {
em.persist(new Consulta(null, medico, paciente, fecha));
}
private Medico registrarMedico(String nombre, String email, String documento, Especialidad especialidad) {
var medico = new Medico(datosMedico(nombre, email, documento, especialidad));
em.persist(medico);
return medico;
}
private Paciente registrarPaciente(String nombre, String email, String documento) {
var paciente = new Paciente(datosPaciente(nombre, email, documento));
em.persist(paciente);
return paciente;
}
private DatosRegistroMedico datosMedico(String nombre, String email, String documento, Especialidad especialidad) {
return new DatosRegistroMedico(
nombre,
email,
"6145489789",
documento,
especialidad,
datosDireccion()
);
}
private DatosRegistroPaciente datosPaciente(String nombre, String email, String documento) {
return new DatosRegistroPaciente(
nombre,
email,
"1234564",
documento,
datosDireccion()
);
}
private DatosDireccion datosDireccion() {
return new DatosDireccion(
"calle x",
"distrito y",
"ciudad z",
"123",
"1"
);
}
}