public void CanWritePostWithCategoryAndImportTheOutput() { CreateBlogAndSetupContext(); // Shortcut to creating a blog post with a category. SubtextBlogMLProvider provider = new SubtextBlogMLProvider(); provider.ConnectionString = Config.ConnectionString; BlogMLReader reader = BlogMLReader.Create(provider); Stream stream = UnitTestHelper.UnpackEmbeddedResource("BlogMl.SinglePostWithCategory.xml"); reader.ReadBlog(stream); // Make sure we created a post with a category. IList<LinkCategory> categories = Links.GetCategories(CategoryType.PostCollection, ActiveFilter.ActiveOnly); Assert.AreEqual(2, categories.Count, "Expected two total categories to be created"); IList<Entry> entries = Entries.GetRecentPosts(100, PostType.BlogPost, PostConfig.None, true); Assert.AreEqual(1, entries.Count, "Expected a single entry."); Assert.AreEqual("Category002", entries[0].Categories[0], "Expected the catgory to be 'Category002'"); // Now export. provider = new SubtextBlogMLProvider(); provider.ConnectionString = Config.ConnectionString; IList<BlogMLCategory> blogMLCategories = provider.GetAllCategories(Config.CurrentBlog.Id.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(2, blogMLCategories.Count, "Expected to find two categories via the provider."); BlogMLWriter writer = BlogMLWriter.Create(provider); // TODO- BlogML 2.0 // writer.EmbedAttachments = false; MemoryStream memoryStream = new MemoryStream(); using (XmlTextWriter xmlWriter = new XmlTextWriter(memoryStream, Encoding.UTF8)) { writer.Write(xmlWriter); // Create a new blog. Assert.IsTrue(Config.CreateBlog("BlogML Import Unit Test Blog", "test", "test", Config.CurrentBlog.Host + "2", ""), "Could not create the blog for this test"); UnitTestHelper.SetHttpContextWithBlogRequest(Config.CurrentBlog.Host + "2", ""); Assert.IsTrue(Config.CurrentBlog.Host.EndsWith("2"), "Looks like we've cached our old blog."); // Now read it back in to a new blog. memoryStream.Position = 0; //Let's take a look at the export. StreamReader streamReader = new StreamReader(memoryStream); Console.WriteLine(streamReader.ReadToEnd()); memoryStream.Position = 0; reader.ReadBlog(memoryStream); } IList<Entry> newEntries = Entries.GetRecentPosts(100, PostType.BlogPost, PostConfig.None, true); Assert.AreEqual(1, newEntries.Count, "Round trip failed to create the same number of entries."); Assert.AreEqual(1, newEntries[0].Categories.Count, "Expected one category for this entry."); Assert.AreEqual("Category002", newEntries[0].Categories[0], "Expected the catgory to be 'Category002'"); }
public void WritingBlogMLWithEntriesContainingNoCategoriesWorks() { CreateBlogAndSetupContext(); //Add a few entries. Entry entry = UnitTestHelper.CreateEntryInstanceForSyndication("phil", "blah blah", "full bodied goodness"); Entries.Create(entry); // Not using BlogMlProvider.Instance() because we need to reset the state. SubtextBlogMLProvider provider = new SubtextBlogMLProvider(); provider.ConnectionString = Config.ConnectionString; BlogMLWriter writer = BlogMLWriter.Create(provider); // TODO- BlogML 2.0 // writer.EmbedAttachments = false; //Note, once the next version of BlogML is released, we can cleanup some of this. StringBuilder builder = new StringBuilder(); StringWriter textWriter = new StringWriter(builder); XmlTextWriter xml = new XmlTextWriter(textWriter); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; XmlWriter xmlWriter = XmlWriter.Create(xml); writer.Write(xmlWriter); XmlDocument doc = new XmlDocument(); doc.LoadXml(builder.ToString()); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("bml", "http://www.blogml.com/2006/09/BlogML"); XmlNodeList postNodes = doc.SelectNodes("//bml:post", nsmgr); Assert.AreEqual(1, postNodes.Count); }
public void WritingBlogMLWithEverythingWorks() { CreateBlogAndSetupContext(); LinkCategory category = new LinkCategory(); category.Title = "CategoryA"; category.BlogId = Config.CurrentBlog.Id; category.CategoryType = CategoryType.PostCollection; category.IsActive = true; Links.CreateLinkCategory(category); //Add a few entries. Entry entry = UnitTestHelper.CreateEntryInstanceForSyndication("phil", "blah blah", "full bodied goodness"); entry.Categories.Add("CategoryA"); Entries.Create(entry); //Add a comment. FeedbackItem comment = UnitTestHelper.CreateCommentInstance(entry.Id, "joe", "re: blah", UnitTestHelper.GenerateRandomString(), DateTime.Now); comment.FeedbackType = FeedbackType.Comment; FeedbackItem.Create(comment, null); FeedbackItem.Approve(comment); //Add a trackback. Trackback trackback = new Trackback(entry.Id, "blah", new Uri("http://example.com/"), "you", "your post is great" + UnitTestHelper.GenerateRandomString()); FeedbackItem.Create(trackback, null); FeedbackItem.Approve(trackback); //setup provider // Not using BlogMlProvider.Instance() because we need to reset the state. SubtextBlogMLProvider provider = new SubtextBlogMLProvider(); provider.ConnectionString = Config.ConnectionString; BlogMLWriter writer = BlogMLWriter.Create(provider); // TODO- BlogML 2.0 // writer.EmbedAttachments = false; //Note, once the next version of BlogML is released, we can cleanup some of this. StringBuilder builder = new StringBuilder(); StringWriter textWriter = new StringWriter(builder); XmlTextWriter xml = new XmlTextWriter(textWriter); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; XmlWriter xmlWriter = XmlWriter.Create(xml); writer.Write(xmlWriter); XmlDocument doc = new XmlDocument(); doc.LoadXml(builder.ToString()); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("bml", "http://www.blogml.com/2006/09/BlogML"); Console.WriteLine(doc.InnerXml); XmlNode postNode = doc.SelectSingleNode("bml:blog/bml:posts/bml:post[@id='1']", nsmgr); Assert.IsNotNull(postNode, "The post node is null"); XmlNode firstPostCategoryNode = doc.SelectSingleNode("bml:blog/bml:posts/bml:post[@id='1']/bml:categories/bml:category", nsmgr); Assert.IsNotNull(firstPostCategoryNode, "Expected a category for the first post"); XmlNode firstPostCommentNode = doc.SelectSingleNode("bml:blog/bml:posts/bml:post[@id='1']/bml:comments/bml:comment", nsmgr); Assert.IsNotNull(firstPostCommentNode, "Expected a comment for the first post"); XmlNode firstPostTrackbackNode = doc.SelectSingleNode("bml:blog/bml:posts/bml:post[@id='1']/bml:trackbacks/bml:trackback", nsmgr); Assert.IsNotNull(firstPostTrackbackNode, "Expected a trackback for the first post"); }