public void ShouldReturnFalseWhenDeleteCommentFoundNoRecord()
        {
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Find(It.IsAny<Expression<Func<Comment, bool>>>(), false))
               .Returns(new List<Comment>());

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var result = _commentsLogic.Delete(1);

            Assert.IsFalse(result);
        }
        public void ShouldThrowExceptionWhenDeleteCommentFails()
        {
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Delete(It.IsAny<Comment>())).Throws(new Exception());

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            Assert.Throws<BlogException>(() => _commentsLogic.Delete(1));
        }
        public void ShouldAddComment()
        {
            var dbResult = new Comment
            {
                CommentId = 7,
                PostId = 1,
                ParentCommentId = null,
                CommentMessage = "Lorem ipsum dolor",
                UserId = 1
            };

            var dbUser = new User {UserId = 1, UserName = "******"};

            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Add(It.IsAny<Comment>())).Returns(dbResult);

            _userRepository = new Mock<IUserRepository>();
            _userRepository.Setup(a => a.Find(It.IsAny<Expression<Func<User, bool>>>(), false)).Returns(new List<User> { dbUser });

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var result = _commentsLogic.Add(new Common.Contracts.Comment
            {
                Id = 7,
                PostId = 1,
                ParentCommentId = null,
                CommentMessage = "Lorem ipsum dolor",
                User = new Common.Contracts.User
                {
                    Id = 1,
                    UserName = "******"
                }
            });

            Assert.IsNotNull(result);
        }
        public void ShouldReturnTrueOnDeleteComment()
        {
            var dbResult = new List<Comment> { new Comment { CommentId = 1 } };
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Find(It.IsAny<Expression<Func<Comment, bool>>>(), false))
               .Returns(dbResult);

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var result = _commentsLogic.Delete(1);

            Assert.IsTrue(result);
        }
        public void ShouldGetCommentReplies()
        {
            var expected = _comments.Where(a => a.ParentCommentId == 5).ToList();
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Find(It.IsAny<Expression<Func<Comment, bool>>>(),
                It.IsAny<Func<IQueryable<Comment>, IOrderedQueryable<Comment>>>(), It.IsAny<string>()))
                .Returns(expected);

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var results = _commentsLogic.GetReplies(5);

            Assert.NotNull(results);
            Assert.NotNull(results[0].ParentCommentId);
            Assert.IsNull(results[0].PostId);
            Assert.AreEqual(1, results.Count);
        }
        public void ShouldThrowExceptionWhenGetCommentReplyFails()
        {
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Find(It.IsAny<Expression<Func<Comment, bool>>>(),
                It.IsAny<Func<IQueryable<Comment>, IOrderedQueryable<Comment>>>(), It.IsAny<string>()))
                .Throws(new Exception());

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            Assert.Throws<BlogException>(() => _commentsLogic.GetReplies(5));
        }
        public void ShouldThrowExceptionWhenGetTopCommentsFails()
        {
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.GetTop(It.IsAny<Expression<Func<Comment, bool>>>(), It.IsAny<int>())).Throws(new Exception());

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            Assert.Throws<BlogException>(() => _commentsLogic.GetTopComments(2, 5));
        }
        public void ShouldGetTopComments()
        {
            var expected = _comments.Where(a => a.PostId == 2).ToList();
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.GetTop(It.IsAny<Expression<Func<Comment, bool>>>(), It.IsAny<int>()))
                .Returns(expected);

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var results = _commentsLogic.GetTopComments(2, 5);

            Assert.NotNull(results);
            Assert.AreEqual(2, results.Count);
            Assert.AreEqual(2, results[0].PostId);
            Assert.AreEqual(2, results[1].PostId);
        }
        public void ShouldThrowExceptionWhenSearchCommentFails()
        {
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.SearchComments(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>()))
                .Throws(new Exception("foo"));

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            Assert.Throws<BlogException>(() => _commentsLogic.SearchComments("foo", 1, 1));
        }
        public void ShouldSearchComments()
        {
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.SearchComments(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>()))
                .Returns(_comments);

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var results = _commentsLogic.SearchComments("foo", 1, 1);

            Assert.NotNull(results);
            Assert.IsInstanceOf(typeof(List<Common.Contracts.Comment>), results);
        }
        public void ShouldGetCommentById()
        {
            var expected = _comments.Where(a => a.CommentId == 1).ToList();
            _commentsRepository = new Mock<ICommentRepository>();
            _commentsRepository.Setup(a => a.Find(It.IsAny<Expression<Func<Comment, bool>>>(),
                It.IsAny<Func<IQueryable<Comment>, IOrderedQueryable<Comment>>>(), It.IsAny<string>()))
                .Returns(expected);

            _userRepository = new Mock<IUserRepository>();

            _commentsLogic = new CommentsLogic(_commentsRepository.Object, _userRepository.Object);

            var result = _commentsLogic.Get(1);

            Assert.NotNull(result);
            Assert.IsInstanceOf(typeof(Common.Contracts.Comment), result);
        }