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

            var questaoId = 1;
            var matricula = 0;
            var imagemId  = 7;

            var questao      = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();
            var alternativas = QuestaoRecursoEntityTestData.ObterAlternativasGabaritoOficialLetraC();

            mock.GetQuestaoConcursoRecurso(questaoId, matricula).Returns(questao);
            mock.ObterAlternativasComEstatisticaFavorita(questaoId).Returns(alternativas);
            mock.ObterComentariosForumConcursoPre(questaoId, matricula).Returns(new List <ForumComentarioDTO>());
            mock.ObterComentariosForumConcursoPos(questaoId, matricula).Returns(new List <ForumComentarioDTO>());
            mock.ObterImagensComentarioRecurso(questaoId).Returns(new List <tblConcursoQuestoes_recursosComentario_Imagens>());
            mock.AlunoSelecionouAlternativaQuestaoProva(Arg.Any <int>(), Arg.Any <int>()).Returns(false);
            mockImage.GetImagensQuestaoConcurso(questaoId).Returns(new List <int> {
                imagemId
            });

            var q = business.GetQuestaoConcursoRecurso(questaoId, matricula);

            q.ForumRecurso.ExisteAnaliseProfessor = false;
            var a = business.DefineForumPreRecursosForumFechado(q);

            Assert.AreEqual(false, a);
        }
        public void SelecionarAlternativaQuestaoConcurso_GravaRespostaCertaOuErrada_TrueSeAcertouFalseSeErrou()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var questaoId      = 1;
            var matricula      = 0;
            var respostaCerta  = "C";
            var respostaErrada = "A";

            var questao      = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();
            var alternativas = QuestaoRecursoEntityTestData.ObterAlternativasGabaritoOficialLetraC();

            mock.GetConcursoQuestoesAlunoFavorita(questaoId, matricula).ReturnsNull();
            mock.ObterAlternativasComEstatisticaFavorita(questaoId).Returns(alternativas);
            mock.InserirQuestaoConcursoAlunoFavoritas(null).ReturnsForAnyArgs(1);

            var qtd = business.SelecionarAlternativaQuestaoConcurso(questaoId, matricula, respostaCerta);

            mock.Received().InserirQuestaoConcursoAlunoFavoritas(
                Arg.Is <tblConcursoQuestoes_Aluno_Favoritas>(
                    f => f.bitResultadoResposta.HasValue && f.bitResultadoResposta.Value));

            business.SelecionarAlternativaQuestaoConcurso(questaoId, matricula, respostaErrada);

            mock.Received().InserirQuestaoConcursoAlunoFavoritas(
                Arg.Is <tblConcursoQuestoes_Aluno_Favoritas>(
                    f => !f.bitResultadoResposta.HasValue || !f.bitResultadoResposta.Value));

            Assert.AreEqual(1, qtd);
        }
        public void SelecionarAlternativaQuestaoConcurso_RespostaExistenteSalvarSegundoChar_LetraColunaPrimeiroEColunaNovaResposta()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var questaoId  = 1;
            var matricula  = 0;
            var novaLetra  = "D";
            var velhaLetra = "A";

            var questao      = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();
            var alternativas = QuestaoRecursoEntityTestData.ObterAlternativasGabaritoOficialLetraC();

            mock.GetConcursoQuestoesAlunoFavorita(questaoId, matricula).Returns(new tblConcursoQuestoes_Aluno_Favoritas
            {
                charResposta     = velhaLetra,
                charRespostaNova = novaLetra
            });

            mock.ObterAlternativasComEstatisticaFavorita(questaoId).Returns(alternativas);
            mock.UpdateQuestoesConcursoAlunoFavoritas(new tblConcursoQuestoes_Aluno_Favoritas()).ReturnsForAnyArgs(1);

            var qtd = business.SelecionarAlternativaQuestaoConcurso(questaoId, matricula, novaLetra);

            mock.Received().UpdateQuestoesConcursoAlunoFavoritas(
                Arg.Is <tblConcursoQuestoes_Aluno_Favoritas>(
                    f => f.charResposta == velhaLetra && f.charRespostaNova == novaLetra));

            Assert.AreEqual(1, qtd);
        }
        public void GetQuestaoConcursoRecurso_MultiplosVotos_QtdCabeNaoCabeUltimoVotoCorreto()
        {
            var mock      = Substitute.For <IQuestaoData>();
            var mockImage = Substitute.For <IImagemData>();
            var business  = new QuestaoBusiness(mock, mockImage, null, null);

            var questaoId            = 1;
            var matricula            = 0;
            var imagemId             = 7;
            var qtdUltimoVotosfavor  = 2;
            var qtdUltimoVotosContra = 1;

            var questao      = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();
            var alternativas = QuestaoRecursoEntityTestData.ObterAlternativasGabaritoOficialLetraC();
            var comentarios  = QuestaoRecursoEntityTestData.GetComentariosVotosQuestaoUltimoVotoAfirma();

            mock.GetQuestaoConcursoRecurso(questaoId, matricula).Returns(questao);
            mock.ObterAlternativasComEstatisticaFavorita(questaoId).Returns(alternativas);
            mock.ObterComentariosForumConcursoPre(questaoId, matricula).Returns(comentarios);
            mock.ObterComentariosForumConcursoPos(questaoId, matricula).Returns(new List <ForumComentarioDTO>());
            mock.ObterImagensComentarioRecurso(questaoId).Returns(new List <tblConcursoQuestoes_recursosComentario_Imagens>());
            mock.AlunoSelecionouAlternativaQuestaoProva(1, 1).ReturnsForAnyArgs(false);
            mockImage.GetImagensQuestaoConcurso(questaoId).Returns(new List <int> {
                imagemId
            });

            var q = business.GetQuestaoConcursoRecurso(questaoId, matricula);

            Assert.IsNotNull(q);
            Assert.AreEqual(qtdUltimoVotosfavor, q.ForumRecurso.ForumPreAnalise.QtdCabe);
            Assert.AreEqual(qtdUltimoVotosContra, q.ForumRecurso.ForumPreAnalise.QtdNaocabe);
            Assert.AreEqual(QuestaoRecurso.StatusOpiniao.Favor.GetDescription(), q.ForumRecurso.ForumPreAnalise.VotoAluno);
        }
        public void GetQuestaoConcursoRecurso_AcertaGabarito_LetraCGabaritoOficial()
        {
            var mock      = Substitute.For <IQuestaoData>();
            var mockImage = Substitute.For <IImagemData>();
            var business  = new QuestaoBusiness(mock, mockImage, null, null);

            var questaoId = 1;
            var matricula = 0;
            var imagemId  = 7;

            var questao      = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();
            var alternativas = QuestaoRecursoEntityTestData.ObterAlternativasGabaritoOficialLetraC();

            mock.GetQuestaoConcursoRecurso(questaoId, matricula).Returns(questao);
            mock.ObterAlternativasComEstatisticaFavorita(questaoId).Returns(alternativas);
            mock.ObterComentariosForumConcursoPre(questaoId, matricula).Returns(new List <ForumComentarioDTO>());
            mock.ObterComentariosForumConcursoPos(questaoId, matricula).Returns(new List <ForumComentarioDTO>());
            mock.ObterImagensComentarioRecurso(questaoId).Returns(new List <tblConcursoQuestoes_recursosComentario_Imagens>());
            mock.AlunoSelecionouAlternativaQuestaoProva(1, 1).ReturnsForAnyArgs(false);
            mockImage.GetImagensQuestaoConcurso(questaoId).Returns(new List <int> {
                imagemId
            });

            var q = business.GetQuestaoConcursoRecurso(questaoId, matricula);

            Assert.IsNotNull(q);
            Assert.AreEqual(QuestaoRecurso.StatusGabarito.GabaritoOficial.GetDescription(), q.Questao.GabaritoTipo);
            Assert.AreEqual("C", q.Questao.GabaritoLetra);
            Assert.AreEqual(imagemId, q.Questao.EnunciadoImagensId.First());
        }
        public void DefineForumPosRecursosForumFechado_TestaForumAberto_ForumPosAberto()
        {
            var mock      = Substitute.For <IQuestaoData>();
            var mockImage = Substitute.For <IImagemData>();
            var business  = new QuestaoBusiness(mock, mockImage, null, null);

            var questao = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();
            var a       = business.DefineForumPosRecursosForumFechado(questao);

            Assert.AreEqual(false, a);
        }
        public void DefineForumPosRecursosForumFechado_TestaForumFechadoComentarioSelaForum_ForumPosFechado()
        {
            var mock      = Substitute.For <IQuestaoData>();
            var mockImage = Substitute.For <IImagemData>();
            var business  = new QuestaoBusiness(mock, mockImage, null, null);

            var questao = QuestaoRecursoEntityTestData.ObterQuestaoForumRecursoExisteAnaliseProfCabeRecurso();

            questao.ForumRecurso.ForumPosAnalise.Comentarios = new List <ForumComentarioDTO>
            {
                new ForumComentarioDTO {
                    Texto = "Este é um comentário final do coordenador", EncerraForum = true, Professor = true
                }
            };
            var a = business.DefineForumPosRecursosForumFechado(questao);

            Assert.AreEqual(true, a);
        }
        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);
        }