public void Deveria_atualizar_provas()
        {
            //arrange
            int mes = DateTime.Now.Month;
            int ano = DateTime.Now.Year;

            Prova prova1 = new ProvaDataBuilder().Sobre("Design Patterns").NaData(DateTime.Now)
                .ComNotaDe(new Aluno(1, "Rech"), 7)
                .ComNotaDe(new Aluno(2, "Wesley"), 10)
                .ComNotaDe(new Aluno(3, "Guilherme"), 4)
                .Build();

            Prova prova2 = new ProvaDataBuilder().Sobre("Herança").NaData(DateTime.Now)
               .ComNotaDe(new Aluno(1, "Rech"), 7)
               .ComNotaDe(new Aluno(2, "Wesley"), 10)
               .ComNotaDe(new Aluno(3, "Guilherme"), 4)
               .Build();

            Mock<ProvaDao> provaDaoFalso = new Mock<ProvaDao>();
            provaDaoFalso.Setup(x => x.SelecionarProvasPendentesFeedback(mes, ano))
                .Returns(new List<Prova> { prova1, prova2 });

            //action
            FeedbackService feedback = new FeedbackService(provaDaoFalso.Object, Mock.Of<GeradorFeedback>());
            feedback.GerarFeedbackAlunos(mes, ano);

            //assert
            provaDaoFalso.Verify(x => x.Atualizar(prova1));
            provaDaoFalso.Verify(x => x.Atualizar(prova2));
        }
        public void Deveria_calcular_media_feedback_mensal_provas()
        {
            //arrange
            int mes = DateTime.Now.Month;
            int ano = DateTime.Now.Year;

            Prova prova1 = new ProvaDataBuilder().Sobre("Design Patterns").NaData(DateTime.Now)
                .ComNotaDe(new Aluno(1, "Rech"), 10)
                .ComNotaDe(new Aluno(2, "Wesley"), 10)
                .ComNotaDe(new Aluno(3, "Guilherme"), 10)
                .Build();

            Prova prova2 = new ProvaDataBuilder().Sobre("Herança").NaData(DateTime.Now)
               .ComNotaDe(new Aluno(1, "Rech"), 8)
               .ComNotaDe(new Aluno(2, "Wesley"), 8)
               .ComNotaDe(new Aluno(3, "Guilherme"), 8)
               .Build();

            List<Prova> provas = new List<Prova> { prova1, prova2 };

            Mock<ProvaDao> provaDaoFalso = new Mock<ProvaDao>();
            provaDaoFalso.Setup(x => x.SelecionarProvasPendentesFeedback(mes, ano))
                .Returns(new List<Prova> { prova1, prova2 });

            FeedbackMensal feedbackMensal = null;

            Mock<GeradorFeedback> geradorFalso = new Mock<GeradorFeedback>();
            geradorFalso.Setup(x => x.SalvarPdf(It.IsAny<FeedbackMensal>()))
                .Callback<FeedbackMensal>(fm => feedbackMensal = fm);

            //action
            FeedbackService feedback = new FeedbackService(provaDaoFalso.Object, geradorFalso.Object);
            feedback.GerarFeedbackAlunos(mes, ano);

            //assert
            feedbackMensal.MediaMensal.Should().Be(9);
        }