public async Task <bool> Handle(AgendarConsultaCommand request, CancellationToken cancellationToken) { if (!ValidarComando(request)) { return(false); } var agendaMedica = await _agendaMedicaRepository.ObterAgendaMedica(request.MedicoId); var agendamentoPaciente = new AgendamentoPaciente(request.PacienteId, request.DataInicioConsulta); if (agendaMedica == null) { agendaMedica = new AgendaMedica(request.MedicoId); agendaMedica.AdicionarAgendamentoPaciente(agendamentoPaciente); _agendaMedicaRepository.Adicionar(agendaMedica); } else if (HorarioAgendamentoNaoDisponivel(request, agendaMedica)) { await _mediatorHandler.PublicarNotificacao(new DomainNotification("Agendamento consulta", "Data não está disponível!")); return(false); } else { agendaMedica.AdicionarAgendamentoPaciente(agendamentoPaciente); _agendaMedicaRepository.AdicionarAgendamentoPaciente(agendamentoPaciente); } return(await _agendaMedicaRepository.UnitOfWork.Commit()); }
public async Task AgendarConsulta_NovaConsulta_ComSucesso() { //Arrange var agendaConsultaCommand = new AgendarConsultaCommand(_medicoId, Guid.NewGuid(), DateTime.Now.AddDays(1)); var agendaMedica = new AgendaMedica(_medicoId); var agendaMedicaExistente = new AgendamentoPaciente(_pacienteId, DateTime.Now.AddDays(1)); agendaMedica.AdicionarAgendamentoPaciente(agendaMedicaExistente); _mocker.GetMock <IAgendaMedicaRepository>().Setup(r => r.UnitOfWork.Commit()).Returns(Task.FromResult(true)); //Act var result = await _agendaMedicaHandler.Handle(agendaConsultaCommand, CancellationToken.None); //Assert Assert.True(result); _mocker.GetMock <IAgendaMedicaRepository>().Verify(r => r.Adicionar(It.IsAny <AgendaMedica>()), Times.Once); _mocker.GetMock <IAgendaMedicaRepository>().Verify(r => r.UnitOfWork.Commit(), Times.Once); }