예제 #1
0
        public Prova Executar(CadastrarProvaDto cadastrarProvaDto)
        {
            Console.WriteLine("Cadastrando prova...");

            var questoes = cadastrarProvaDto.Questoes;

            var questoesValidadas = ValidarQuestoes(questoes)
                                    .Select(questao => new Questao
            {
                Numero = questao.Numero,
                Peso   = questao.Peso
            }).ToList();

            var pesoTotalProva = questoesValidadas.Sum(questaoProva => questaoProva.Peso);
            var valorPeso      = (double)10 / pesoTotalProva;

            var prova = new Prova
            {
                Id        = GerarIdExterno(),
                ValorPeso = valorPeso,
                Questoes  = questoesValidadas,
            };

            Dados.Provas.Add(prova);

            Console.WriteLine("Prova cadastrada com sucesso");
            return(prova);
        }
예제 #2
0
        private void CadastrarProvas()
        {
            var prova1 = new CadastrarProvaDto
            {
                Questoes = new List <QuestaoDto>
                {
                    new QuestaoDto {
                        Numero = 1, Peso = 1
                    },
                    new QuestaoDto {
                        Numero = 2, Peso = 3
                    }
                }
            };
            var prova2 = new CadastrarProvaDto
            {
                Questoes = new List <QuestaoDto>
                {
                    new QuestaoDto {
                        Numero = 1, Peso = 1
                    },
                    new QuestaoDto {
                        Numero = 2, Peso = 2
                    },
                    new QuestaoDto {
                        Numero = 3, Peso = 3
                    }
                }
            };
            var cadastrarProva = new CadastrarProvaRequest();

            cadastrarProva.Executar(prova1);
            cadastrarProva.Executar(prova2);
        }
예제 #3
0
        public void Deve_ocorrer_exception_caso_sequencia_de_questoes_nao_seja_completa()
        {
            var provaDto = new CadastrarProvaDto
            {
                Questoes = new List <QuestaoDto>
                {
                    new QuestaoDto {
                        Numero = 1, Peso = 1
                    },
                    new QuestaoDto {
                        Numero = 2, Peso = 2
                    },
                    new QuestaoDto {
                        Numero = 4, Peso = 3
                    },
                }
            };
            var request = new CadastrarProvaRequest();

            Func <Prova> func = () => request.Executar(provaDto);

            Assert.Throws <Exception>(func);
            Assert.Equal(
                "Nem todos os numeros de questões foram encontrados",
                Assert.Throws <Exception>(func).Message
                );
            Assert.Equal(0, Dados.Provas.Count);
        }
예제 #4
0
        public void Deve_ocorrer_exception_caso_sequencia_de_questoes_nao_comece_em_1()
        {
            var provaDto = new CadastrarProvaDto
            {
                Questoes = new List <QuestaoDto>
                {
                    new QuestaoDto {
                        Numero = 0, Peso = 1
                    },
                    new QuestaoDto {
                        Numero = 1, Peso = 2
                    },
                }
            };
            var request = new CadastrarProvaRequest();

            Func <Prova> func = () => request.Executar(provaDto);

            Assert.Throws <Exception>(func);
            Assert.Equal(
                "A sequencia de questões deve começar em 1",
                Assert.Throws <Exception>(func).Message
                );
            Assert.Equal(0, Dados.Provas.Count);
        }
예제 #5
0
        public void Deve_ocorrer_exception_caso_haja_questoes_duplicadas()
        {
            var provaDto = new CadastrarProvaDto
            {
                Questoes = new List <QuestaoDto>
                {
                    new QuestaoDto {
                        Numero = 1, Peso = 1
                    },
                    new QuestaoDto {
                        Numero = 1, Peso = 2
                    },
                }
            };
            var request = new CadastrarProvaRequest();

            Func <Prova> func = () => request.Executar(provaDto);

            Assert.Throws <Exception>(func);
            Assert.Equal(
                "Numero da questão não pode ser duplicado",
                Assert.Throws <Exception>(func).Message
                );
            Assert.Equal(0, Dados.Provas.Count);
        }
예제 #6
0
        public void Deve_cadastrar_prova_com_sucesso()
        {
            var provaDto = new CadastrarProvaDto
            {
                Questoes = new List <QuestaoDto>
                {
                    new QuestaoDto {
                        Numero = 1, Peso = 1
                    },
                    new QuestaoDto {
                        Numero = 2, Peso = 2
                    },
                    new QuestaoDto {
                        Numero = 3, Peso = 3
                    },
                    new QuestaoDto {
                        Numero = 4, Peso = 1
                    },
                }
            };
            var request = new CadastrarProvaRequest();

            var prova = request.Executar(provaDto);

            Assert.Contains("ALF-", prova.Id);
            Assert.Equal(4, prova.Questoes.Count);
            Assert.Equal(1.429, prova.ValorPeso, 3);
            Assert.Equal(1, Dados.Provas.Count);
        }
예제 #7
0
 public Prova CadastrarProva([FromBody] CadastrarProvaDto body)
 {
     return(_provaRequest.Executar(body));
 }