Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Falha no teste do cenário 1

Meu teste do cenário 1 não está passando, configurei conforme o video e procurei dúvidas semelhantes no forum mas sem sucesso. Estou rodando o mysql em um container docker onde criei os 2 bancos(prod e test), não sei se isso afeta alguma coisa, mas só pra deixar registrado.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Código:

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.DadosCadastroPaciente;
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.LocalDateTime;
import java.time.temporal.TemporalAdjusters;

import static org.assertj.core.api.Assertions.assertThat;

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles(profiles = {"test"})
class MedicoRepositoryTest {

    @Autowired
    private MedicoRepository medicoRepository;

    @Autowired
    private TestEntityManager em;


    @Test
    @DisplayName("Deveria devolver null quando o único médico cadastrado disponível na data não está disponível.")
    void escolherMedicoAleatorioLivreNaDataCenario1() {
        var proximaSegundaAs10= LocalDateTime.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).withHour(10).withMinute(0);

       var medico=cadastrarMedico("Medico","medico@voll.med","123456",Especialidade.CARDIOLOGIA);
       var paciente=cadastrarPaciente("Paciente","paciente@email.com","0000000000000");
       cadastrarConsulta(medico,paciente,proximaSegundaAs10);

        var medicoLivre=medicoRepository.escolherMedicoAleatorioLivreNaData(Especialidade.CARDIOLOGIA,proximaSegundaAs10);
        assertThat(medicoLivre).isNull();
    }

    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
        );
    }


}

meu application.properties-test Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Link do repositório github: https://github.com/Foxyy-commits/API.VollMed

2 respostas
solução!

Oi!

Talvez seja problema com a data da consulta. Altere essa linha no seu teste:

var proximaSegundaAs10= LocalDateTime.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).withHour(10).withMinute(0);

Para:

var proximaSegundaAs10= LocalDateTime.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)).withHour(10).withMinute(0).withSecond(0).withNano(0);

Era isso mesmo professor, nem pensei que poderia ser a diferença de milissegundos.