public void GetQuestoesProvaConcursoComStatus_QuantidadeQuestoes_NumeroQuestoesProva()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var idProva    = 2;
            var questoes   = QuestaoRecursoEntityTestData.GetQuestoesConcurso();
            var idQuestoes = questoes.Select(q => q.Questao.Id).ToArray();
            var votos      = QuestaoRecursoEntityTestData.GetQuestaoConcursoVotos(false, idQuestoes);

            mock.GetQuestoesProvaConcurso(idProva).Returns(questoes);
            mock.GetQtdCabeQuestoesConcurso(idQuestoes).Returns(votos);
            mock.AlunoTemRankAcertos(idProva, 1).Returns(false);
            mock.AlunoSelecionouAlternativaQuestaoProva(idProva, 1).Returns(false);

            var result = business.GetQuestoesProvaConcursoComStatus(idProva, 1);

            Assert.AreEqual(questoes.Count, result.Questoes.Count());

            mock.Received().GetQuestoesProvaConcurso(idProva);
        }
        public void GetQuestoesProvaConcursoComStatus_TituloNoPainel_TextoDeTitulo()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var idProva    = 2;
            var questoes   = QuestaoRecursoEntityTestData.GetQuestoesConcurso();
            var idQuestoes = questoes.Select(q => q.Questao.Id).ToArray();
            var votos      = QuestaoRecursoEntityTestData.GetQuestaoConcursoVotos(false, idQuestoes);

            mock.GetQuestoesProvaConcurso(idProva).Returns(questoes);
            mock.GetQtdCabeQuestoesConcurso(idQuestoes).Returns(votos);
            mock.AlunoTemRankAcertos(idProva, 1).Returns(false);
            mock.AlunoSelecionouAlternativaQuestaoProva(idProva, 1).Returns(false);

            var result = business.GetQuestoesProvaConcursoComStatus(idProva, 1);

            mock.Received().GetQuestoesProvaConcurso(idProva);

            Assert.IsNotNull(result);
            Assert.AreEqual("Titulo", result.Prova.PainelAvisoTitulo);
        }
        public void GetQuestoesProvaConcursoComStatus_StatusQuestoes_StatusDecisao()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var idProva  = 2;
            var questoes = QuestaoRecursoEntityTestData.GetQuestoesConcurso();

            var idQuestoes = questoes.Select(q => q.Questao.Id).ToArray();
            var votos      = QuestaoRecursoEntityTestData.GetQuestaoConcursoVotos(true, idQuestoes);

            votos.First(v => v.IdQuestao == 3).QtdCabeRecurso = 0;

            mock.GetQuestoesProvaConcurso(idProva).Returns(questoes);
            mock.GetQtdCabeQuestoesConcurso(idQuestoes).Returns(votos);
            mock.AlunoTemRankAcertos(idProva, 1).Returns(false);
            mock.AlunoSelecionouAlternativaQuestaoProva(idProva, 1).Returns(false);

            var result = business.GetQuestoesProvaConcursoComStatus(idProva, 1);

            var questaoCabe = result.Questoes.First(q => q.Id == 1);

            Assert.AreEqual(QuestaoRecurso.StatusQuestao.CabeRecurso.GetDescription(), questaoCabe.StatusQuestao);

            var questaoNaoCabe = result.Questoes.First(q => q.Id == 2);

            Assert.AreEqual(QuestaoRecurso.StatusQuestao.NaoCabeRecurso.GetDescription(), questaoNaoCabe.StatusQuestao);

            var questaoNaoSolicitado = result.Questoes.First(q => q.Id == 3);

            Assert.AreEqual(QuestaoRecurso.StatusQuestao.NaoSolicitado.GetDescription(), questaoNaoSolicitado.StatusQuestao);

            var questaoEmAnalise = result.Questoes.First(q => q.Id == 4);

            Assert.AreEqual(QuestaoRecurso.StatusQuestao.EmAnalise.GetDescription(), questaoEmAnalise.StatusQuestao);

            mock.Received().GetQuestoesProvaConcurso(idProva);
        }