Exemplo n.º 1
0
        public void CommentRssWriterProducesValidFeed()
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "", "Subtext.Web");

            var blogInfo = new Blog();

            blogInfo.Host  = "localhost";
            blogInfo.Email = "*****@*****.**";
            blogInfo.RFC3229DeltaEncodingEnabled = true;
            blogInfo.Title      = "My Blog Rulz";
            blogInfo.TimeZoneId = TimeZonesTest.PacificTimeZoneId;

            HttpContext.Current.Items.Add("BlogInfo-", blogInfo);

            var rootEntry = new Entry(PostType.None);

            rootEntry.AllowComments = true;
            rootEntry.Title         = "Comments requiring your approval.";
            rootEntry.Body          = "The following items are waiting approval.";
            rootEntry.PostType      = PostType.None;

            Entry entry = UnitTestHelper.CreateEntryInstanceForSyndication(blogInfo, "haacked", "title of the post",
                                                                           "Body of the post.");

            entry.EntryName            = "titleofthepost";
            entry.DateCreated          =
                entry.DateSyndicated   =
                    entry.DateModified = DateTime.ParseExact("2006/02/01", "yyyy/MM/dd", CultureInfo.InvariantCulture);
            entry.Id = 1001;

            var comment = new FeedbackItem(FeedbackType.Comment);

            comment.Id                = 1002;
            comment.DateCreated       =
                comment.DateModified  = DateTime.ParseExact("2006/02/01", "yyyy/MM/dd", CultureInfo.InvariantCulture);
            comment.Title             = "re: titleofthepost";
            comment.ParentEntryName   = entry.EntryName;
            comment.ParentDateCreated = entry.DateCreated;
            comment.Body              = "<strong>I rule!</strong>";
            comment.Author            = "Jane Schmane";
            comment.Email             = "*****@*****.**";
            comment.EntryId           = entry.Id;
            comment.Status            = FeedbackStatusFlag.NeedsModeration;

            var comments = new List <FeedbackItem>();

            comments.Add(comment);

            var urlHelper = new Mock <UrlHelper>();

            urlHelper.Setup(url => url.EntryUrl(It.IsAny <Entry>())).Returns(
                "/Subtext.Web/archive/2006/02/01/titleofthepost.aspx");
            urlHelper.Setup(url => url.FeedbackUrl(It.IsAny <FeedbackItem>())).Returns(
                "/Subtext.Web/archive/2006/02/01/titleofthepost.aspx#1002");
            urlHelper.Setup(url => url.ImageUrl(It.IsAny <string>())).Returns("/Subtext.Web/images/RSS2Image.gif");
            urlHelper.Setup(url => url.AdminUrl(It.IsAny <string>(), It.IsAny <object>())).Returns(
                "/Subtext.Web/Admin/Feedback.aspx?status=2");
            var context = new Mock <ISubtextContext>();

            context.Setup(c => c.UrlHelper).Returns(urlHelper.Object);
            context.Setup(c => c.Blog).Returns(blogInfo);

            var writer = new ModeratedCommentRssWriter(new StringWriter(), comments, rootEntry, context.Object);

            string expected = @"<rss version=""2.0"" "
                              + @"xmlns:dc=""http://purl.org/dc/elements/1.1/"" "
                              + @"xmlns:trackback=""http://madskills.com/public/xml/rss/module/trackback/"" "
                              + @"xmlns:wfw=""http://wellformedweb.org/CommentAPI/"" "
                              + @"xmlns:slash=""http://purl.org/rss/1.0/modules/slash/"" "
                              + @"xmlns:copyright=""http://blogs.law.harvard.edu/tech/rss"" "
                              + @"xmlns:image=""http://purl.org/rss/1.0/modules/image/"">" + Environment.NewLine
                              + indent() + @"<channel>" + Environment.NewLine
                              + indent(2) + @"<title>Comments requiring your approval.</title>" + Environment.NewLine
                              + indent(2) + @"<link>http://localhost/Subtext.Web/Admin/Feedback.aspx?status=2</link>" +
                              Environment.NewLine
                              + indent(2) + @"<description>The following items are waiting approval.</description>" +
                              Environment.NewLine
                              + indent(2) + @"<language>en-US</language>" + Environment.NewLine
                              + indent(2) + @"<copyright>Subtext Weblog</copyright>" + Environment.NewLine
                              + indent(2) + @"<generator>{0}</generator>" + Environment.NewLine
                              + indent(2) + @"<image>" + Environment.NewLine
                              + indent(3) + @"<title>Comments requiring your approval.</title>" + Environment.NewLine
                              + indent(3) + @"<url>http://localhost/Subtext.Web/images/RSS2Image.gif</url>" +
                              Environment.NewLine
                              + indent(3) +
                              @"<link>http://localhost/Subtext.Web/archive/2006/02/01/titleofthepost.aspx</link>" +
                              Environment.NewLine
                              + indent(3) + @"<width>77</width>" + Environment.NewLine
                              + indent(3) + @"<height>60</height>" + Environment.NewLine
                              + indent(2) + @"</image>" + Environment.NewLine
                              + indent(2) + @"<item>" + Environment.NewLine
                              + indent(3) + @"<title>re: titleofthepost</title>" + Environment.NewLine
                              + indent(3) +
                              @"<link>http://localhost/Subtext.Web/archive/2006/02/01/titleofthepost.aspx#1002</link>" +
                              Environment.NewLine
                              + indent(3) + @"<description>&lt;strong&gt;I rule!&lt;/strong&gt;</description>" +
                              Environment.NewLine
                              + indent(3) + @"<dc:creator>Jane Schmane</dc:creator>" + Environment.NewLine
                              + indent(3) +
                              @"<guid>http://localhost/Subtext.Web/archive/2006/02/01/titleofthepost.aspx#1002</guid>" +
                              Environment.NewLine
                              + indent(3) + @"<pubDate>Wed, 01 Feb 2006 08:00:00 GMT</pubDate>" + Environment.NewLine
                              + indent(2) + @"</item>" + Environment.NewLine
                              + indent() + @"</channel>" + Environment.NewLine
                              + @"</rss>";

            expected = string.Format(expected, VersionInfo.VersionDisplayText);

            Assert.AreEqual(expected, writer.Xml);
        }
Exemplo n.º 2
0
        public void CommentRssWriterProducesValidEmptyFeed()
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog");

            var blogInfo = new Blog();

            blogInfo.Host      = "localhost";
            blogInfo.Subfolder = "blog";
            blogInfo.Email     = "*****@*****.**";
            blogInfo.RFC3229DeltaEncodingEnabled = true;
            blogInfo.Title      = "My Blog Rulz";
            blogInfo.TimeZoneId = TimeZonesTest.PacificTimeZoneId;

            HttpContext.Current.Items.Add("BlogInfo-", blogInfo);

            var entry = new Entry(PostType.None);

            entry.AllowComments = true;
            entry.Title         = "Comments requiring your approval.";
            entry.Body          = "The following items are waiting approval.";
            entry.PostType      = PostType.None;

            var urlHelper = new Mock <UrlHelper>();

            urlHelper.Setup(url => url.ImageUrl(It.IsAny <string>())).Returns("/images/RSS2Image.gif");
            urlHelper.Setup(url => url.GetVirtualPath(It.IsAny <string>(), It.IsAny <object>())).Returns(
                "/blog/Admin/Feedback.aspx?status=2");
            urlHelper.Setup(url => url.EntryUrl(It.IsAny <Entry>())).Returns("/blog/Admin/Feedback.aspx?status=2");
            urlHelper.Setup(url => url.AdminUrl(It.IsAny <string>(), It.IsAny <object>())).Returns(
                "/blog/Admin/Feedback.aspx?status=2");
            var subtextContext = new Mock <ISubtextContext>();

            subtextContext.Setup(c => c.Blog).Returns(blogInfo);
            subtextContext.Setup(c => c.UrlHelper).Returns(urlHelper.Object);
            var writer = new ModeratedCommentRssWriter(new StringWriter(), new List <FeedbackItem>(), entry,
                                                       subtextContext.Object);

            string expected = @"<rss version=""2.0"" "
                              + @"xmlns:dc=""http://purl.org/dc/elements/1.1/"" "
                              + @"xmlns:trackback=""http://madskills.com/public/xml/rss/module/trackback/"" "
                              + @"xmlns:wfw=""http://wellformedweb.org/CommentAPI/"" "
                              + @"xmlns:slash=""http://purl.org/rss/1.0/modules/slash/"" "
                              + @"xmlns:copyright=""http://blogs.law.harvard.edu/tech/rss"" "
                              + @"xmlns:image=""http://purl.org/rss/1.0/modules/image/"">" + Environment.NewLine
                              + indent() + @"<channel>" + Environment.NewLine
                              + indent(2) + @"<title>Comments requiring your approval.</title>" + Environment.NewLine
                              + indent(2) + @"<link>http://localhost/blog/Admin/Feedback.aspx?status=2</link>" +
                              Environment.NewLine
                              + indent(2) + @"<description>The following items are waiting approval.</description>" +
                              Environment.NewLine
                              + indent(2) + @"<language>en-US</language>" + Environment.NewLine
                              + indent(2) + @"<copyright>Subtext Weblog</copyright>" + Environment.NewLine
                              + indent(2) + @"<generator>{0}</generator>" + Environment.NewLine
                              + indent(2) + @"<image>" + Environment.NewLine
                              + indent(3) + @"<title>Comments requiring your approval.</title>" + Environment.NewLine
                              + indent(3) + @"<url>http://localhost/images/RSS2Image.gif</url>" + Environment.NewLine
                              + indent(3) + @"<link>http://localhost/blog/Admin/Feedback.aspx?status=2</link>" +
                              Environment.NewLine
                              + indent(3) + @"<width>77</width>" + Environment.NewLine
                              + indent(3) + @"<height>60</height>" + Environment.NewLine
                              + indent(2) + @"</image>" + Environment.NewLine
                              + indent(1) + @"</channel>" + Environment.NewLine
                              + @"</rss>";

            expected = string.Format(expected, VersionInfo.VersionDisplayText);

            Assert.AreEqual(expected, writer.Xml);
        }