public void Can_Get_A_Related_List_Of_BLogPosts() { // Arrange: Given a series of blogposts that are related by tags and categories, a repository // that manages those blogposts and a blog controller // categories var category = new Category() { CategoryID = 1, Name = "category 1" }; var category2 = new Category() { CategoryID = 2, Name = "category 2" }; // blogposts var blogPost = new BlogPost() { ContentID = 1 , Title = "blogPost 1", Path="blogpost-1", PublishingDate = DateTime.Now}; var blogPost2 = new BlogPost() { ContentID = 2 }; var blogPost3 = new BlogPost() { ContentID = 3 }; var blogPost4 = new BlogPost() { ContentID = 4 }; // add categories to blogposts blogPost.Categories.Add(category); blogPost2.Categories.Add(category2); blogPost3.Categories.Add(category); // create mock repository var moqBlogPostRepository = UnitTestHelpers.MockBlogPostRepositoryReturnsMoqObject(blogPost, blogPost2, blogPost3); const int numberOfRelatedPosts = 5; //moq get by id moqBlogPostRepository.Setup(x => x.GetByPath(blogPost.PublishingDate.Year, blogPost.PublishingDate.Month, blogPost.PublishingDate.Day, blogPost.Path)).Returns(blogPost); //moq getQueryableRelatedBlogPosts moqBlogPostRepository. Setup(x => x.GetListOfRelatedBlogPosts(blogPost, numberOfRelatedPosts)). // when a user wants to get related posts Returns((new List<BlogPost> { blogPost3 })); // They will obtain the related posts var controller = new BlogController(moqBlogPostRepository.Object); // Act: when the user goes into the detail screen var result = controller.Details(blogPost.PublishingDate.Year, blogPost.PublishingDate.Month, blogPost.PublishingDate.Day, blogPost.Path); // Assert: then he can see a series of related blogposts var viewResult = ((ViewResult) result); var model = ((BlogPostDetailModel) viewResult.ViewData.Model); model.HasRelatedBlogPosts.ShouldEqual(true); model.RelatedBlogPosts.Count.ShouldEqual(1); }
public void Can_View_A_Selected_BlogPost() { //Arrange: Given a series of blog posts, a repository and a controller const int year = 2010; const int month = 10; const int day = 10; BlogPost selectedBlogPost = new BlogPost { ContentID = 1, Title = "This is a post title", Path = "this-is-a-post-title", PublishingDate = new DateTime(year, month, day), }; var moqBlogPostRepository = UnitTestHelpers.MockBlogPostRepositoryReturnsMoqObject(selectedBlogPost, new BlogPost() {ContentID = 2}); moqBlogPostRepository.Setup(x => x.GetByPath(year, month, day, selectedBlogPost.Path)).Returns(selectedBlogPost); var controller = new BlogController(moqBlogPostRepository.Object); //Act: if the user clicks on one of the blogpost var result = controller.Details(year, month, day, // Date selectedBlogPost.Path); // path var view = (ViewResult) result; //Assert: then the user will be able to see the content of the blogpost ((BlogPostDetailModel) view.ViewData.Model).BlogPost.ContentID.ShouldEqual(1); }