Estou com esse erro, alguém pode me ajudar, por favor?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou com esse erro, alguém pode me ajudar, por favor?
package med.voll.api.domain.medico;
import med.voll.api.domain.consulta.Consulta;
import med.voll.api.domain.endereco.DadosEndereco;
import med.voll.api.domain.paciente.DadosCadastroPacientes;
import med.voll.api.domain.paciente.Paciente;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.ActiveProfiles;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
class MedicoRepositoryTest {
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private TestEntityManager em;
@Test
@DisplayName("Deveria devolver null quando único médico cadastrado não está disponível 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@voll.med", "00000000000");
cadastrarConsulta(medico, paciente, proximaSegundaAs10);
var medicoLivre = medicoRepository.escolherMedicoAleatorioLivreNaData(Especialidade.CARDIOLOGIA, proximaSegundaAs10);
assertThat(medicoLivre).isEqualTo(medico);
}
private void cadastrarConsulta(Medico medico, Paciente paciente, LocalDateTime data) {
em.persist(new Consulta(null, medico, paciente, data));
}
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 DadosCadastroMedicos dadosMedico(String nome, String email, String crm, Especialidade especialidade) {
return new DadosCadastroMedicos(
nome,
email,
"61999999999",
crm,
especialidade,
dadosEndereco()
);
}
private DadosCadastroPacientes dadosPaciente(String nome, String email, String cpf) {
return new DadosCadastroPacientes(
nome,
email,
"61999999999",
cpf,
dadosEndereco()
);
}
private DadosEndereco dadosEndereco() {
return new DadosEndereco(
"rua xpto",
"bairro",
"00000000",
"Brasilia",
"DF",
null,
null
);
}
}
Oi!
Se você tiver feito a funcionaldiade de cancelamento de consultas, altere essa linha para:
em.persist(new Consulta(null, medico, paciente, data, null));
Eu de fato fiz a funcionalidade de cancelamento de consultas, contudo, ao tentar colocar como null o motivo de cancelamento, eu recebo este erro:
org.opentest4j.AssertionFailedError: expected: med.voll.api.domain.medico.Medico@3e but was: null Expected :med.voll.api.domain.medico.Medico@3e Actual :null
O seu assert está incorreto no teste. Deveria ser:
assertThat(medicoLivre).isNull();
Agora foi com a correção do assert, obrigada!
Antes eu tentei rodar o teste informando o motivo do cancelamento e ele rodou, tinha deixado o código assim, pode me explicar o que poderia ter de prejuízo se deixasse dessa forma?
em.persist(new Consulta(null, medico, paciente, data, MotivoCancelamento.OUTROS));
Vai funcionar, pois o teste não está checando nada em relação ao motivo de cancelamento. Mas, teoricamente não está correto, pois ao cadastrar uma consulta o motivo de cancelamento deveria ser null, já que a consulta acabou de ser criada e ainda não foi cancelada ;)
Bons estudos!
Ahhhh agora entendi! Muito obrigada :)