public Atendimento(
            IAtendimentoRepo atendimentoRepo,
            ITimeProvider timeProvider,
            PeriodoFechado horario,
            Paciente paciente,
            string observacao
            )
        {
            observacao = observacao?.Trim();

            Assegure.Que(atendimentoRepo != null, () => $"{nameof(atendimentoRepo)} é null");

            Assegure.Que(timeProvider != null, () => $"{nameof(timeProvider)} é null");

            Assegure.Que(horario != null, () => $"{nameof(horario)} é null");

            Assegure.Que(paciente != null, "Informe o Paciente");

            Assegure.Que((observacao?.Length ?? 0) <= 500, () => "Observação deve ter no máximo 500 caracteres");


            Assegure.Que(horario.DataInicial >= timeProvider.Now, () => "Informe um Horário com data maior ou igual a de agora");


            var atendimentos = atendimentoRepo.ExisteColisaoComOHorario(horario);

            Assegure.Que(atendimentos.Count == 0, () => $"Já existe Atendimento marcado para o Horário informado");


            Horario = horario;

            Paciente = paciente;

            Observacao = observacao;



            Status = TipoStatus.MARC;

            DataCadastro = timeProvider.Now;
        }
        public AtendimentoFacts()
        {
            // hoje é:
            hoje         = DateTime.Parse("2018-05-01 07:00");
            timeProvider = Substitute.For <ITimeProvider>();
            timeProvider.Now.Returns(hoje);

            // e vou agenda um horário em:
            horario = new PeriodoFechado(DateTime.Parse("2018-06-01 09:00"), DateTime.Parse("2018-06-01 09:30"));

            atendimentoRepo = Substitute.For <IAtendimentoRepo>();

            //Por padrão o atendimento não conflita com nenhum outro
            var atendimentoExistente = new List <Atendimento>();

            atendimentoRepo.ExisteColisaoComOHorario(null).ReturnsForAnyArgs(atendimentoExistente);//NAO



            paciente = Substitute.For <Paciente>();

            observacao = "uma observação";
        }