Minha classe de teste do repository não esta fazendo rollback dos dados enviados ao banco de dados, toda vez tenho que dar um "truncate table" para que sejam excluidos
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)//Não substitua as conf do meu banco de
// dados
@ActiveProfiles("test")
class MedicoRepositoryTest {
@MockBean
private MedicoRepository medicoRepository;
@Autowired
private TestEntityManager em;
@Test
@DisplayName("Deveria devolver null quando unico medico cadastrado não esta disponivel na data")
void escolherMedicoAleatorioLivreNaDataCenario1() {
//given ou arrange
var proximaSegundaAs10 = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).atTime(10,0);
var medico = cadastrarMedico("Medico", "medicoabc@voll.med", "654321", Especialidade.CARDIOLOGIA);
var paciente = cadastrarPaciente("paciente", "paciente@email.com", "00000000000");
cadastrarConsulta(medico, paciente, proximaSegundaAs10);
//when ou act
var medicoLivre = medicoRepository.escolherMedicoAleatorioLivreNaData(Especialidade.CARDIOLOGIA,
proximaSegundaAs10);
//then ou assert
assertThat(medicoLivre).isNull();
}
@Test
@DisplayName("Deveria devolver medico quando ele estiver disponivel na data")
void escolherMedicoAleatorioLivreNaDataCenario2() {
//given ou arrabge
var medico = cadastrarMedico("Medico", "medicoabc@voll.med", "654321", Especialidade.CARDIOLOGIA);
var proximaSegundaAs10 = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).atTime(10,0);
//when ou act
var medicoLivre = medicoRepository.escolherMedicoAleatorioLivreNaData(Especialidade.CARDIOLOGIA,
proximaSegundaAs10);
//then ou assert
assertThat(medicoLivre).isEqualTo(medico);
}
private void cadastrarConsulta(Medico medico, Paciente paciente, LocalDateTime data) {
em.persist(new Consulta(null, medico, paciente, data,null));
}
private Medico cadastrarMedico(String nome, String email, String crm, Especialidade especialidade) {
var medico = new Medico(dadosMedico(nome, email, crm, especialidade));
em.persist(medico);
return medico;
}
private Paciente cadastrarPaciente(String nome, String email, String cpf) {
var paciente = new Paciente(dadosPaciente(nome, email, cpf));
em.persist(paciente);
return paciente;
}
private DadosCadastroMedico dadosMedico(String nome, String email, String crm, Especialidade especialidade) {
return new DadosCadastroMedico(
nome,
email,
"61999999999",
crm,
especialidade,
dadosEndereco()
);
}
private DadosCadastroPaciente dadosPaciente(String nome, String email, String cpf) {
return new DadosCadastroPaciente(
nome,
email,
"61999999999",
cpf,
dadosEndereco()
);
}
private DadosEndereco dadosEndereco() {
return new DadosEndereco(
"rua xpto",
"bairro",
"00000000",
"Brasilia",
"DF",
null,
null
);
}
}