public void ExtractAndSaveAllNewBlogPostsSavesAllNewBlogPosts() { // Arrange BlogInfo blogInfoA = new BlogInfo { Description = _blogA.Link, Title = _blogA.Title }; BlogInfo blogInfoB = new BlogInfo { Description = _blogB.Link, Title = _blogB.Title }; _wordPressBlogReaderMock.Setup(wp => wp.VerifyBlog(_blogA.Link)).Returns(blogInfoA); _wordPressBlogReaderMock.Setup(wp => wp.VerifyBlog(_blogB.Link)).Returns(blogInfoB); _wordPressBlogReaderMock.Setup(wp => wp.GetBlogPosts(_blogA.Link)).Returns(_postsNewForBlogA.AsQueryable()); _wordPressBlogReaderMock.Setup(wp => wp.GetBlogPosts(_blogB.Link)).Returns(_postsNewForBlogB.AsQueryable()); _postRepositoryMock.Setup(pr => pr.Any(It.IsAny<Expression<Func<Post, bool>>>())).Returns(false); // Act _blogService.ExtractAndSaveAllNewBlogPosts(); // Assert // Verify that: // Add is called for Post object the correct number of times // unit of work is committed for each blog _postRepositoryMock.Verify(p => p.Add(It.IsAny<Post>()), Times.Exactly(_postsNewForBlogA.Length + _postsNewForBlogB.Length)); _unitOfWorkMock.Verify(uow => uow.Commit(), Times.Exactly(_blogs.Length)); }
public void PutBlogApprovedChangedtoTrueReturnsHttpStatusCodeNoContentAndAddsPosts() { // Arrange _userRepositoryMock.Setup(pr => pr.FirstOrDefault(It.IsAny<Expression<Func<User, bool>>>())) .Returns(_users[_userAuthorizedIndexInArray]); BlogInfo blogInfo = new BlogInfo { Description = "Stupendous Blog", Title = "KDS Blog" }; _wordPressBlogReaderMock.Setup(m => m.VerifyBlog(It.IsAny<string>())).Returns(blogInfo); // Act IHttpActionResult actionResult = _controller.PutBlog( _blogIDNotApproved, new BlogModel { BlogID = _blogIDNotApproved, BlogType = BlogTypes.WordPress, CreatedDate = new DateTime(2015, 12, 1, 10, 55, 32), Approved = true, AuthorEmail = "*****@*****.**", AuthorName = "KDS", Description = "Stupendous Blog", Link = "XXXX", Title = "KDS Blog" }); var statusCodeResult = actionResult as StatusCodeResult; // Assert // Verify that: // GetByID is called just once // Update is called for Blog object // unit of work is committed at least once // ExtractAndSaveBlogPosts is called // result of update is HTTP status code with no content _blogRepositoryMock.Verify(b => b.GetByID(_blogIDNotApproved), Times.Once); _blogRepositoryMock.Verify(b => b.Update(It.IsAny<Blog>()), Times.Once); _blogServiceMock.Verify(bs => bs.ExtractAndSaveBlogPosts(It.IsAny<Blog>()), Times.Once); _unitOfWorkMock.Verify(uow => uow.Commit(), Times.AtLeastOnce); Assert.IsNotNull(actionResult); Assert.IsNotNull(statusCodeResult); Assert.AreEqual(statusCodeResult.StatusCode, HttpStatusCode.NoContent); }
public void PostBlogAddsBlog() { // Arrange BlogInfo blogInfo = new BlogInfo { Description = "New Testing", Title = "New Testy's Blog" }; _wordPressBlogReaderMock.Setup(m => m.VerifyBlog(It.IsAny<string>())).Returns(blogInfo); // Act IHttpActionResult actionResult = _controller.PostBlog( new BlogModel { BlogID = 0, BlogType = BlogTypes.WordPress, CreatedDate = new DateTime(2015, 12, 2, 14, 55, 32), Approved = false, AuthorEmail = "*****@*****.**", AuthorName = "TestNew McTesterson", Description = "New Testing", Link = "http://testy.wordpress.com", Title = "New Testy's Blog" }); // Assert // Verify: // Add is called just once with Blog object // Unit of work is committed just once // HTTP result is CreatedAtRouteNegotiatedContentResult // Location header is set in created result _blogRepositoryMock.Verify(p => p.Add(It.IsAny<Blog>()), Times.Once); _unitOfWorkMock.Verify(uow => uow.Commit(), Times.Once); Assert.IsInstanceOfType (actionResult, typeof(CreatedAtRouteNegotiatedContentResult<BlogModel>)); var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult<BlogModel>; Assert.IsNotNull(createdResult); Assert.AreEqual(createdResult.RouteName, "DefaultApi"); }
public void ExtractBlogPostsReturnsBlogPosts() { // Arrange BlogInfo blogInfo = new BlogInfo { Description = _blogA.Description, Title = _blogA.Title }; _wordPressBlogReaderMock.Setup(wp => wp.VerifyBlog(_blogA.Link)).Returns(blogInfo); _wordPressBlogReaderMock.Setup(wp => wp.GetBlogPosts(_blogA.Link)).Returns(_postsBlogA.AsQueryable()); // Act IEnumerable<Post> posts = _blogService.ExtractBlogPosts(_blogs[_blogIDAWithPostsIndexInArray]); // Assert Assert.AreEqual(posts.Count(), _postsBlogA.Length); }
public void ExtractAndSaveBlogPostsExtractsAndSavesBlogPosts() { // Arrange BlogInfo blogInfo = new BlogInfo { Description = _blogA.Description, Title = _blogA.Title }; _wordPressBlogReaderMock.Setup(wp => wp.VerifyBlog(_blogA.Link)).Returns(blogInfo); _wordPressBlogReaderMock.Setup(wp => wp.GetBlogPosts(_blogA.Link)).Returns(_postsBlogA.AsQueryable()); // Act _blogService.ExtractAndSaveBlogPosts(_blogA); // Assert // Verify that: // Add is called for Post object the correct number of times // unit of work is committed once _postRepositoryMock.Verify(p => p.Add(It.IsAny<Post>()), Times.Exactly(_postsBlogA.Length)); _unitOfWorkMock.Verify(uow => uow.Commit(), Times.Once); }