public void DevePermitirEdicaoSituacaoPlanejamentoParaAndamentoApenasQuandoPossuirHorasParaConsumir()
        {
            CronogramaTarefaDto novaTarefa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 0,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto novaTarefaComEstimativa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaConsumidaParcialmente = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
            };

            CronogramaTarefaDto tarefaPronta = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
            };

            CronogramaTarefaDto tarefaCancelada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            string mensagem;

            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefa, CsTipoPlanejamento.Execução, out mensagem), "Não deveria permitir setar a situação como execução pois não foi estimada uma quantidade de horas a ser realizada a tarefa.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefaComEstimativa, CsTipoPlanejamento.Execução, out mensagem), "Deveria permitir setar a situação como execução pois foi estimada uma quantidade de horas a ser realizada a tarefa.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaConsumidaParcialmente, CsTipoPlanejamento.Execução, out mensagem), "Deveria permitir setar a situação como execução pois ainda há horas restantes para executar a tarefa.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaPronta, CsTipoPlanejamento.Execução, out mensagem), "Não deveria permitir setar a situação como execução pois foram consumidas todas as horas de execução da tarefa.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCancelada, CsTipoPlanejamento.Execução, out mensagem), "Não deveria permitir setar a situação como execução pois após o cancelamento não há horas restantes para trabalhar na tarefa.");
        }
        public void DevePermitirEdicaoSituacaoPlanejamentoParaProntoSePossuirEstimativaInicial()
        {
            CronogramaTarefaDto novaTarefa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 0,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto novaTarefaComEstimativa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaConsumidaParcialmente = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
            };

            CronogramaTarefaDto tarefaCanceladaParcialmenteRealizada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("6:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("2:00"),
            };

            string mensagem;

            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefa, CsTipoPlanejamento.Encerramento, out mensagem), "Não deve permitir ir para o estado de pronto pois não possui uma estimativa inicial de duração");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefaComEstimativa, CsTipoPlanejamento.Encerramento, out mensagem), "Deve permitir pois a tarefa já possui uma estimativa inicial de duração.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaConsumidaParcialmente, CsTipoPlanejamento.Encerramento, out mensagem), "Deve permitir pois a tarefa já possui uma estimativa inicial de duração");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCanceladaParcialmenteRealizada, CsTipoPlanejamento.Encerramento, out mensagem), "Deve permitir a edição pois a tarefa já possui uma estimativa inicial de duração.");
        }
        public void DevePermitirEdicaoSituacaoPlanejamentoParaNaoIniciadoApenasQuandoNaoFoiRealizadoNenhumEsforco()
        {
            CronogramaTarefaDto novaTarefa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 0,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto novaTarefaComEstimativa = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaConsumidaParcialmente = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("4:00"),
            };

            CronogramaTarefaDto tarefaPronta = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = true,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("8:00"),
            };

            CronogramaTarefaDto tarefaCancelada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = 0,
                NbRealizado          = 0,
            };

            CronogramaTarefaDto tarefaCanceladaParcialmenteRealizada = new CronogramaTarefaDto()
            {
                CsLinhaBaseSalva     = false,
                DtAtualizadoEm       = DateTime.Now,
                NbEstimativaInicial  = 8,
                NbEstimativaRestante = ConversorTimeSpan.ConverterHorasDeStringParaTicks("6:00"),
                NbRealizado          = ConversorTimeSpan.ConverterHorasDeStringParaTicks("2:00"),
            };

            string mensagem;

            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefa, CsTipoPlanejamento.Planejamento, out mensagem), "Deve poder estar na situação de não iniciado pois não foi realizado nenhum esforço");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(novaTarefaComEstimativa, CsTipoPlanejamento.Planejamento, out mensagem), "Deve poder estar na situação de não iniciado pois não foi realizado nenhum esforço.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaConsumidaParcialmente, CsTipoPlanejamento.Planejamento, out mensagem), "Não deve poder estar na situação de não iniciado pois foi estimado um esforço realizado.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaPronta, CsTipoPlanejamento.Planejamento, out mensagem), "Não deve poder estar na situação de não iniciado pois a tarefa já foi executada.");
            Assert.IsTrue(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCancelada, CsTipoPlanejamento.Planejamento, out mensagem), "Deve poder estar na situação de não iniciado pois não foi realizado nenhum esforço.");
            Assert.IsFalse(TarefaEditada.ValidarEdicaoSituacaoPlanejamento(tarefaCanceladaParcialmenteRealizada, CsTipoPlanejamento.Planejamento, out mensagem), "Não deve poder estar na situação de não iniciado pois foi realizado um esforço parcial na tarefa.");
        }