public void Check10ValidatePostOk() { using (var db = new SampleWebAppDb()) { //SETUP var snap = new DbSnapShot(db); var existingTag = db.Tags.First(); var existingBlogger = db.Blogs.First(); //ATTEMPT var newPost = new Post() { Blogger = existingBlogger, Title = "Test post", Content = "Nothing special", Tags = new[] { existingTag } }; db.Posts.Add(newPost); var status = db.SaveChangesWithChecking();; //VERIFY status.IsValid.ShouldEqual(true, status.Errors); snap.CheckSnapShot(db,1,1); } }
public void Check21ValidatePostContentTwoErrors() { using (var db = new SampleWebAppDb()) { //SETUP var existingTag = db.Tags.First(); var existingBlogger = db.Blogs.First(); //ATTEMPT var newPost = new Post() { Blogger = existingBlogger, Title = "Test post", Content = "Should not end sentence with sheep. Nor end sentence with lamb.", Tags = new[] { existingTag } }; db.Posts.Add(newPost); var status = db.SaveChangesWithChecking();; //VERIFY status.IsValid.ShouldEqual(false); status.Errors.Count.ShouldEqual(2); status.Errors[0].ErrorMessage.ShouldEqual("Sorry. Not allowed to end a sentance with 'sheep'."); status.Errors[1].ErrorMessage.ShouldEqual("Sorry. Not allowed to end a sentance with 'lamb'."); } }
public void Check20AddPostOk() { using (var db = new SampleWebAppDb()) { //SETUP var snap = new DbSnapShot(db); //ATTEMPT var uglyTag = db.Tags.Single(x => x.Slug == "ugly"); var jonBlogger = db.Blogs.First(); var newPost = new Post { Blogger = jonBlogger, Content = "a few simple words.", Title = "A new post", Tags = new[] { uglyTag } }; db.Posts.Add(newPost); var status = db.SaveChangesWithChecking(); //VERIFY status.IsValid.ShouldEqual(true, status.Errors); snap.CheckSnapShot(db, 1, 1); var uglyPosts = db.Tags.Include(x => x.Posts).Single(y => y.Slug == "ugly").Posts; uglyPosts.Count.ShouldEqual(3); } }
public void Check16ValidatePostTitleError() { using (var db = new SampleWebAppDb()) { //SETUP var existingTag = db.Tags.First(); var existingBlogger = db.Blogs.First(); //ATTEMPT var newPost = new Post() { Blogger = existingBlogger, Title = "Test post?", Content = "Nothing special", Tags = new[] { existingTag } }; db.Posts.Add(newPost); var status = db.SaveChangesWithChecking();; //VERIFY status.IsValid.ShouldEqual(false); status.Errors.Count.ShouldEqual(1); status.Errors[0].ErrorMessage.ShouldEqual("Sorry, but you can't ask a question, i.e. the title can't end with '?'."); } }
private static IEnumerable<Blog> DecodeBlogs(XElement element, Dictionary<string, Tag> tagsDict) { var result = new Collection<Blog>(); foreach (var blogXml in element.Elements("Blog")) { var newBlogger = new Blog() { Name = blogXml.Element("Name").Value, EmailAddress = blogXml.Element("Email").Value, Posts = new Collection<Post>() }; foreach (var postXml in blogXml.Element("Posts").Elements("Post")) { var content = postXml.Element("Content").Value; var trimmedContent = string.Join("\n", content.Split('\n').Select(x => x.Trim())); var newPost = new Post() { Blogger = newBlogger, Title = postXml.Element("Title").Value, Content = trimmedContent, Tags = postXml.Element("TagSlugs").Value.Split(',').Select(x => tagsDict[x.Trim()]).ToList() }; newBlogger.Posts.Add(newPost ); } result.Add( newBlogger); } return result; }