Carregar Dados Manualmente nos Testes:
Você pode inserir os dados necessários diretamente nos métodos de teste usando o TestEntityManager
ou os repositórios. Isso garante que cada teste tenha os dados específicos que precisa.
Exemplo:
@Autowired
private TestEntityManager em;
@Test
@DisplayName("Deveria devolver null quando unico medico cadastrado nao esta disponivel na data")
void escolherMedicoAleatorioLivreNaDataCenario1() {
var proximaSegundaAs10 = LocalDate.now()
.with(TemporalAdjusters.next(DayOfWeek.MONDAY))
.atTime(10, 0);
var medico = cadastrarMedico("Medico", "medico@voll.med", "123456", Especialidade.CARDIOLOGIA);
var paciente = cadastrarPaciente("Paciente", "paciente@email.com", "00000000000");
cadastrarConsulta(medico, paciente, proximaSegundaAs10);
var medicoLivre = medicoRepository.escolherMedicoAleatorioLivreNaData(Especialidade.CARDIOLOGIA, proximaSegundaAs10);
assertThat(medicoLivre).isNull();
}
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 void cadastrarConsulta(Medico medico, Paciente paciente, LocalDateTime data) {
em.persist(new Consulta(null, medico, paciente, data));
}
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
);
}
Usar Scripts SQL no application-test.properties
:
Você pode adicionar um arquivo SQL com os dados iniciais e configurá-lo no application-test.properties
para ser executado ao iniciar os testes.
Crie um arquivo data.sql
em src/test/resources
com os dados que deseja inserir:
INSERT INTO medico (id, nome, email, crm, especialidade) VALUES (1, 'Medico', 'medico@voll.med', '123456', 'CARDIOLOGIA');
INSERT INTO paciente (id, nome, email, cpf) VALUES (1, 'Paciente', 'paciente@email.com', '00000000000');
INSERT INTO consulta (id, medico_id, paciente_id, data) VALUES (1, 1, 1, '2023-10-09 10:00:00');
E configure no application-test.properties
:
spring.datasource.data=classpath:data.sql