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

            var questaoId  = 1;
            var matricula  = 0;
            var comentario = "Comentario novo pre";

            mock.AlunoJaVotouForumQuestao(questaoId, matricula, QuestaoRecurso.TipoForumRecurso.Pre).Returns(false);
            mock.GetQuestaoConcursoById(questaoId).Returns(new tblConcursoQuestoes
            {
                intQuestaoID = questaoId,
                ID_CONCURSO_RECURSO_STATUS = (int)QuestaoRecurso.StatusQuestao.NaoSolicitado
            });
            mock.EnviarVotoComentarioForum(
                Arg.Any <int>(), Arg.Any <int>(), Arg.Any <string>(),
                Arg.Any <string>(), Arg.Any <QuestaoRecurso.TipoForumRecurso>()).Returns(1);

            mock.UpdateQuestaoConcurso(Arg.Any <tblConcursoQuestoes>()).Returns(1);

            var result = business.EnviarComentarioVotoForumPre(
                questaoId, matricula, QuestaoRecurso.StatusOpiniao.Favor.GetDescription(), comentario
                );

            Assert.AreEqual(1, result);
            mock.Received().EnviarVotoComentarioForum(
                questaoId, matricula, QuestaoRecurso.StatusOpiniao.Favor.GetDescription(),
                comentario, QuestaoRecurso.TipoForumRecurso.Pre);

            mock.Received().UpdateQuestaoConcurso(
                Arg.Is <tblConcursoQuestoes>(b => b.intQuestaoID == questaoId &&
                                             b.ID_CONCURSO_RECURSO_STATUS == (int)QuestaoRecurso.StatusQuestao.EmAnalise));
        }
        public void EnviarComentarioVotoForumPre_TestarEnviarEmailSeVotoEnviado_MetodoChamado()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var questaoId  = 1;
            var matricula  = 0;
            var comentario = "Comentario novo pre";
            var voto       = QuestaoRecurso.StatusOpiniao.Favor;

            mock.AlunoJaVotouForumQuestao(questaoId, matricula, QuestaoRecurso.TipoForumRecurso.Pre).Returns(false);
            mock.GetQuestaoConcursoById(questaoId).Returns(new tblConcursoQuestoes
            {
                intQuestaoID = questaoId,
                ID_CONCURSO_RECURSO_STATUS = (int)QuestaoRecurso.StatusQuestao.EmAnalise
            });
            mock.EnviarVotoComentarioForum(
                Arg.Any <int>(), Arg.Any <int>(), Arg.Any <string>(),
                Arg.Any <string>(), Arg.Any <QuestaoRecurso.TipoForumRecurso>()).Returns(1);

            var result = business.EnviarComentarioVotoForumPre(
                questaoId, matricula, voto.GetDescription(), comentario
                );

            Assert.AreEqual(1, result);
            mock.Received().EnviarVotoComentarioForum(
                questaoId, matricula, QuestaoRecurso.StatusOpiniao.Favor.GetDescription(),
                comentario, QuestaoRecurso.TipoForumRecurso.Pre);

            mock.Received().EnvioEmailComentarioForumPreAsync(
                questaoId, matricula, comentario, voto == QuestaoRecurso.StatusOpiniao.Favor);
        }
        public void EnviarComentarioVotoForumPre_TestaEnviarSeAlunoVotou_Um()
        {
            var mock     = Substitute.For <IQuestaoData>();
            var business = new QuestaoBusiness(mock, null, null, null);

            var questaoId = 1;
            var matricula = 0;

            mock.AlunoJaVotouForumQuestao(questaoId, matricula, QuestaoRecurso.TipoForumRecurso.Pre).Returns(true);
            mock.GetQuestaoConcursoById(questaoId).Returns(new tblConcursoQuestoes
            {
                intQuestaoID = questaoId,
                ID_CONCURSO_RECURSO_STATUS = (int)QuestaoRecurso.StatusQuestao.EmAnalise
            });
            mock.EnviarVotoComentarioForum(
                Arg.Any <int>(), Arg.Any <int>(), Arg.Any <string>(),
                Arg.Any <string>(), Arg.Any <QuestaoRecurso.TipoForumRecurso>()).Returns(1);

            var result = business.EnviarComentarioVotoForumPre(
                questaoId, matricula, QuestaoRecurso.StatusOpiniao.Contra.GetDescription(), "Comentario novo forum pre"
                );

            Assert.AreEqual(1, result);
            mock.Received().EnviarVotoComentarioForum(
                Arg.Any <int>(), Arg.Any <int>(), Arg.Any <string>(),
                Arg.Any <string>(), Arg.Any <QuestaoRecurso.TipoForumRecurso>()
                );
        }