public void CommentEditPresenter_EditCommentShouldReturnMessageWhenContentLengthNotInRange(string testContent)
        {
            var view = new Mock <ICommentEditView>();

            view.SetupAllProperties();
            var forumData = new Mock <IForumData>();

            var comment = new Comment()
            {
                Id = 1, IsVisible = true
            };

            forumData.Setup(f => f.CommentsRepository.GetCommentById(It.IsAny <int>())).Returns(comment);

            var presenter = new CommentEditPresenter(view.Object, forumData.Object);

            view.Raise(v => v.EditComment += null, view.Object, new ContentEventArgs(1, testContent));

            StringAssert.Contains("Content must be between", view.Object.Model.Error);
        }
        public void CommentEditPresenter_GetCommentShouldGetItCorrectly()
        {
            var view = new Mock <ICommentEditView>();

            view.SetupAllProperties();
            var forumData = new Mock <IForumData>();

            var presenter = new CommentEditPresenter(view.Object, forumData.Object);

            var comment = new Comment()
            {
                Id = 1, IsVisible = true
            };


            forumData.Setup(t => t.CommentsRepository.GetCommentById(It.Is <int>(x => x == 1))).Returns(comment);

            view.Raise(v => v.GetComment += null, view.Object, new GetByIdEventArgs(1));

            Assert.AreEqual(comment, view.Object.Model.Comment);
        }
        public void CommentEditPresenter_GetCommentShouldReturnMessageWhenNotVisible()
        {
            var view = new Mock <ICommentEditView>();

            view.SetupAllProperties();
            var forumData = new Mock <IForumData>();

            var presenter = new CommentEditPresenter(view.Object, forumData.Object);

            var comment = new Comment()
            {
                Id = 1, IsVisible = false
            };


            forumData.Setup(t => t.CommentsRepository.GetCommentById(It.Is <int>(x => x == 1))).Returns(comment);

            view.Raise(v => v.GetComment += null, view.Object, new GetByIdEventArgs(1));

            StringAssert.Contains("File not found", view.Object.Model.Error);
        }
        public void CommentEditPresenter_EditCommentShouldThrowIfDbAnswersFail()
        {
            var view = new Mock <ICommentEditView>();

            view.SetupAllProperties();
            var forumData = new Mock <IForumData>();

            var comment = new Comment()
            {
                Id = 1, IsVisible = true
            };

            forumData.Setup(f => f.CommentsRepository.GetCommentById(It.IsAny <int>())).Returns(comment);
            forumData.Setup(f => f.CommentsRepository.UpdateComment(It.IsAny <Comment>())).Throws(new Exception());

            var presenter = new CommentEditPresenter(view.Object, forumData.Object);

            var testContent = "TestContent Should be at least 50 characters long!!!";

            Assert.Throws <HttpException>(() => view.Raise(v => v.EditComment += null, view.Object, new ContentEventArgs(1, testContent)));
        }
        public void CommentEditPresenter_EditCommentShouldTrimContent()
        {
            var view = new Mock <ICommentEditView>();

            view.SetupAllProperties();
            var forumData = new Mock <IForumData>();

            var comment = new Comment()
            {
                Id = 1, IsVisible = true
            };

            forumData.Setup(f => f.CommentsRepository.GetCommentById(It.IsAny <int>())).Returns(comment);

            var presenter = new CommentEditPresenter(view.Object, forumData.Object);

            var testContent     = "  TestContent Should be at least 50 characters long!!!   ";
            var expectedContent = "TestContent Should be at least 50 characters long!!!";

            view.Raise(v => v.EditComment += null, view.Object, new ContentEventArgs(1, testContent));

            forumData.Verify(r => r.CommentsRepository.UpdateComment(It.Is <Comment>(a => a.Contents == expectedContent)), Times.Once);
            forumData.Verify(x => x.Save(), Times.Once);
        }