OLa professor, poderia me ajudar?
Criei o properties de teste junto com a databse vollmed_api_test, porem ao executar o primeiro teste tomo o erro abaixo:
org.hibernate.exception.SQLGrammarException: could not execute statement [Table 'vollmed_api_test.pacientes' doesn't exist] [insert into pacientes (cpf,email,bairro,cep,cidade,complemento,logradouro,numero,uf,nome,status,telefone) values (?,?,?,?,?,?,?,?,?,?,?,?)]
Segue a minha classe MedicoRepositoryTest
@DataJpaTest // esta anotação é utilizada para testar uma interface repository
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) //não substitua as configurações do meu banco de dados para a usar do banco em memória
@ActiveProfiles("test") //o spring entende que é para ler o application-test.properties
class MedicoRepositoryTest {
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private TestEntityManager testEntityManager;
@Test
@DisplayName("Deve devolver null quando unico medico cadastrado não está disponível na data")
void escolherMedicoDisponivelNaData1() {
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.escolherMedicoDisponivelNaData(Especialidade.CARDIOLOGIA, proximaSegundaAs10);
Assertions.assertThat(medicoLivre).isNull();
}
@Test
@DisplayName("Deveria devolver medico quando ele estiver disponivel na data")
void escolherMedicoAleatorioLivreNaDataCenario2() {
var proximaSegundaAs10 = LocalDate.now()
.with(TemporalAdjusters.next(DayOfWeek.MONDAY))
.atTime(10, 0);
var medico = cadastrarMedico("Medico", "medico@voll.med", "123456", Especialidade.CARDIOLOGIA);
var medicoLivre = medicoRepository.escolherMedicoDisponivelNaData(Especialidade.CARDIOLOGIA, proximaSegundaAs10);
Assertions.assertThat(medicoLivre).isEqualTo(medico);
}
private void cadastrarConsulta(Medico medico, Paciente paciente, LocalDateTime data) {
testEntityManager.persist(new AgendamentoConsulta(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));
testEntityManager.persist(medico);
return medico;
}
private Paciente cadastrarPaciente(String nome, String email, String cpf) {
var paciente = new Paciente(dadosPaciente(nome, email, cpf));
testEntityManager.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
);
}
}
e abaixo o properties
spring.datasource.url=jdbc:mysql://localhost/vollmed_api_test