public void OpmlHandler_WithRequestForAggregateBlog_GetsGroupIdFromQueryString() { //arrange var queryString = new NameValueCollection { { "GroupID", "310" } }; var context = new Mock<ISubtextContext>(); context.Stub(c => c.HttpContext.Response.ContentType); context.Setup(c => c.HttpContext.Response.Output).Returns(new StringWriter()); context.Setup(c => c.HttpContext.Request.QueryString).Returns(queryString); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://example.com/")); context.SetupUrlHelper(new Mock<BlogUrlHelper>()); var repository = new Mock<ObjectRepository>(); int? parsedGroupId = null; repository.Setup(r => r.GetBlogsByGroup("example.com", It.IsAny<int?>())).Callback<string, int?>( (host, groupId) => parsedGroupId = groupId); context.SetupRepository(repository); var writer = new Mock<OpmlWriter>(); writer.Setup(w => w.Write(It.IsAny<IEnumerable<Blog>>(), It.IsAny<TextWriter>(), It.IsAny<BlogUrlHelper>())); var appSettings = new NameValueCollection(); appSettings.Add("AggregateEnabled", "true"); var hostInfo = new HostInfo(appSettings); var handler = new OpmlHandler(context.Object, writer.Object, new LazyNotNull<HostInfo>(() => hostInfo)); //act handler.ProcessRequest(); //assert Assert.AreEqual(310, parsedGroupId.Value); }
public void OpmlHandler_WithRequest_SetsContentTypeToXml() { //arrange var repository = new Mock <ObjectRepository>(); repository.Setup(r => r.GetBlogsByGroup("http://subtextproject.com/", 1)).Returns(new Blog[] { new Blog { } }); var queryString = new NameValueCollection(); queryString.Add("GroupID", "1"); var context = new Mock <ISubtextContext>(); context.Setup(c => c.Repository).Returns(repository.Object); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://subtextproject.com/")); context.Setup(c => c.HttpContext.Request.QueryString).Returns(queryString); context.Stub(c => c.HttpContext.Response.ContentType); context.Setup(c => c.HttpContext.Response.Output).Returns(new StringWriter()); context.SetupUrlHelper(new Mock <BlogUrlHelper>()); var writer = new Mock <OpmlWriter>(); writer.Setup(w => w.Write(It.IsAny <IEnumerable <Blog> >(), It.IsAny <TextWriter>(), It.IsAny <BlogUrlHelper>())); var handler = new OpmlHandler(context.Object, writer.Object, new LazyNotNull <HostInfo>(CreateHostInfo)); //act handler.ProcessRequest(); //assert Assert.AreEqual("text/xml", context.Object.HttpContext.Response.ContentType); }
public void OpmlHandler_WithRequestForAggregateBlog_GetsGroupIdFromQueryString() { //arrange var queryString = new NameValueCollection { { "GroupID", "310" } }; var context = new Mock <ISubtextContext>(); context.Stub(c => c.HttpContext.Response.ContentType); context.Setup(c => c.HttpContext.Response.Output).Returns(new StringWriter()); context.Setup(c => c.HttpContext.Request.QueryString).Returns(queryString); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://example.com/")); context.SetupUrlHelper(new Mock <UrlHelper>()); var repository = new Mock <ObjectProvider>(); int?parsedGroupId = null; repository.Setup(r => r.GetBlogsByGroup("example.com", It.IsAny <int?>())).Callback <string, int?>( (host, groupId) => parsedGroupId = groupId); context.SetupRepository(repository); var writer = new Mock <OpmlWriter>(); writer.Setup(w => w.Write(It.IsAny <IEnumerable <Blog> >(), It.IsAny <TextWriter>(), It.IsAny <UrlHelper>())); var handler = new OpmlHandler(context.Object, writer.Object); var hostInfo = new HostInfo { BlogAggregationEnabled = true, AggregateBlog = new Blog() }; //act handler.ProcessRequest(hostInfo); //assert Assert.AreEqual(310, parsedGroupId.Value); }
public void CreateWelcomeContent_CreatesIntroBlogPostAndCategories() { // arrange var installationManager = new InstallationManager(new Mock<IInstaller>().Object, null); var repository = new Mock<ObjectProvider>(); var entryPublisher = new Mock<IEntryPublisher>(); Entry entry = null; entryPublisher.Setup(p => p.Publish(It.Is<Entry>(e => e.PostType == PostType.BlogPost))).Callback<Entry>(e => entry = e); var urlHelper = new Mock<UrlHelper>(); urlHelper.Setup(u => u.AdminUrl("")).Returns("/admin/default.aspx"); urlHelper.Setup(u => u.EntryUrl(It.Is<Entry>(e => e.PostType == PostType.Story))).Returns<Entry>(e => "/articles/" + e.EntryName + ".aspx"); urlHelper.Setup(u => u.HostAdminUrl("default.aspx")).Returns("/hostadmin/default.aspx"); var context = new Mock<ISubtextContext>(); context.SetupUrlHelper(urlHelper); context.Setup(c => c.Repository).Returns(repository.Object); var blog = new Blog {Id = 123, Author = "TestAuthor"}; // act installationManager.CreateWelcomeContent(context.Object, entryPublisher.Object, blog); // assert Assert.AreEqual(entry.Title, "Welcome to Subtext!"); Assert.AreEqual(entry.EntryName, "welcome-to-subtext"); Assert.Contains(entry.Body, @"<a href=""/admin/default.aspx"); Assert.Contains(entry.Body, @"<a href=""/articles/welcome-to-subtext-article.aspx"); Assert.Contains(entry.Body, @"<a href=""/hostadmin/default.aspx"); Assert.IsTrue(entry.AllowComments); Assert.IsTrue(!entry.Body.Contains(@"<a href=""{0}")); Assert.IsTrue(!entry.Body.Contains(@"<a href=""{1}")); Assert.IsTrue(!entry.Body.Contains(@"<a href=""{2}")); }
public void CreateWelcomeContent_CreatesIntroComment() { // arrange var installationManager = new InstallationManager(new Mock <IInstaller>().Object, null); var repository = new Mock <ObjectRepository>(); var entryPublisher = new Mock <IEntryPublisher>(); var urlHelper = new Mock <BlogUrlHelper>(); urlHelper.Setup(u => u.AdminUrl("feedback")).Returns("/admin/feedback/default.aspx"); var context = new Mock <ISubtextContext>(); context.SetupUrlHelper(urlHelper); context.Setup(c => c.Repository).Returns(repository.Object); var blog = new Blog { Id = 123, Author = "TestAuthor" }; FeedbackItem comment = null; repository.Setup(r => r.Create(It.IsAny <FeedbackItem>())).Callback <FeedbackItem>(c => comment = c); // act installationManager.CreateWelcomeContent(context.Object, entryPublisher.Object, blog); // assert Assert.IsTrue(comment.Approved); Assert.AreEqual(comment.Title, "re: Welcome to Subtext!"); Assert.Contains(comment.Body, @"<a href=""/admin/feedback/"); Assert.IsTrue(!comment.Body.Contains(@"<a href=""{1}")); }
public void CreateWelcomeContent_CreatesIntroArticle() { // arrange var installationManager = new InstallationManager(new Mock <IInstaller>().Object, null); var repository = new Mock <ObjectRepository>(); var entryPublisher = new Mock <IEntryPublisher>(); Entry article = null; entryPublisher.Setup(p => p.Publish(It.Is <Entry>(e => e.PostType == PostType.Story))).Callback <Entry>(e => article = e); var urlHelper = new Mock <BlogUrlHelper>(); urlHelper.Setup(u => u.AdminUrl("articles")).Returns("/admin/articles/default.aspx"); var context = new Mock <ISubtextContext>(); context.SetupUrlHelper(urlHelper); context.Setup(c => c.Repository).Returns(repository.Object); var blog = new Blog { Id = 123, Author = "TestAuthor" }; // act installationManager.CreateWelcomeContent(context.Object, entryPublisher.Object, blog); // assert Assert.AreEqual(article.Title, "Welcome to Subtext!"); Assert.Contains(article.Body, @"<a href=""/admin/articles/"); Assert.IsTrue(!article.Body.Contains(@"<a href=""{0}")); }
public void OpmlHandler_WithRequest_SetsContentTypeToXml() { //arrange var context = new Mock<ISubtextContext>(); context.Stub(c => c.HttpContext.Response.ContentType); context.Setup(c => c.HttpContext.Response.Output).Returns(new StringWriter()); context.SetupUrlHelper(new Mock<UrlHelper>()); var writer = new Mock<OpmlWriter>(); writer.Setup(w => w.Write(It.IsAny<IEnumerable<Blog>>(), It.IsAny<TextWriter>(), It.IsAny<UrlHelper>())); var handler = new OpmlHandler(context.Object, writer.Object); //act handler.ProcessRequest(new HostInfo()); //assert Assert.AreEqual("text/xml", context.Object.HttpContext.Response.ContentType); }
public void OpmlHandler_WithRequest_SetsContentTypeToXml() { //arrange var context = new Mock <ISubtextContext>(); context.Stub(c => c.HttpContext.Response.ContentType); context.Setup(c => c.HttpContext.Response.Output).Returns(new StringWriter()); context.SetupUrlHelper(new Mock <UrlHelper>()); var writer = new Mock <OpmlWriter>(); writer.Setup(w => w.Write(It.IsAny <IEnumerable <Blog> >(), It.IsAny <TextWriter>(), It.IsAny <UrlHelper>())); var handler = new OpmlHandler(context.Object, writer.Object); //act handler.ProcessRequest(new HostInfo()); //assert Assert.AreEqual("text/xml", context.Object.HttpContext.Response.ContentType); }
public static void FakeSyndicationContext(this Mock <ISubtextContext> subtextContextMock, Blog blog, string virtualPath, string applicationPath, string subfolder, Action <string> callback) { var urlHelper = new Mock <UrlHelper>(); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeSyndicationRequest(virtualPath, applicationPath, callback); var hashTable = new Hashtable(); httpContext.Setup(c => c.Items).Returns(hashTable); subtextContextMock.Setup(c => c.Cache).Returns(new TestCache()); subtextContextMock.Setup(c => c.HttpContext).Returns(httpContext.Object); string imagePath = "/images/RSS2Image.gif"; if (applicationPath != "/") { imagePath = applicationPath + imagePath; } urlHelper.Setup(url => url.ImageUrl(It.IsAny <string>())).Returns(new VirtualPath(imagePath)); urlHelper.Setup(u => u.AggBugUrl(It.IsAny <int>())).Returns <int>(id => "/Subtext.Web/aggbug/" + id + ".aspx"); urlHelper.Setup(u => u.CommentRssUrl(It.IsAny <int>())).Returns <int>( id => "/Subtext.Web/comments/commentRss/" + id + ".aspx"); urlHelper.Setup(u => u.TrackbacksUrl(It.IsAny <int>())).Returns <int>( id => "/Subtext.Web/services/trackbacks/" + id + ".aspx"); var routeData = new RouteData(); routeData.Values.Add("subfolder", subfolder); var requestContext = new RequestContext(httpContext.Object, routeData); subtextContextMock.SetupBlog(blog); subtextContextMock.SetupUrlHelper(urlHelper.Object); subtextContextMock.SetupRequestContext(requestContext); subtextContextMock.Setup(c => c.Cache).Returns(new TestCache()); }
public void CreateWelcomeContent_CreatesIntroArticle() { // arrange var installationManager = new InstallationManager(new Mock<IInstaller>().Object, null); var repository = new Mock<ObjectProvider>(); var entryPublisher = new Mock<IEntryPublisher>(); Entry article = null; entryPublisher.Setup(p => p.Publish(It.Is<Entry>(e => e.PostType == PostType.Story))).Callback<Entry>(e => article = e); var urlHelper = new Mock<UrlHelper>(); urlHelper.Setup(u => u.AdminUrl("articles")).Returns("/admin/articles/default.aspx"); var context = new Mock<ISubtextContext>(); context.SetupUrlHelper(urlHelper); context.Setup(c => c.Repository).Returns(repository.Object); var blog = new Blog { Id = 123, Author = "TestAuthor" }; // act installationManager.CreateWelcomeContent(context.Object, entryPublisher.Object, blog); // assert Assert.AreEqual(article.Title, "Welcome to Subtext!"); Assert.Contains(article.Body, @"<a href=""/admin/articles/"); Assert.IsTrue(!article.Body.Contains(@"<a href=""{0}")); }
public void OpmlHandler_WithRequest_SetsContentTypeToXml() { //arrange var repository = new Mock<ObjectRepository>(); repository.Setup(r => r.GetBlogsByGroup("http://subtextproject.com/", 1)).Returns(new Blog[] { new Blog { } }); var queryString = new NameValueCollection(); queryString.Add("GroupID", "1"); var context = new Mock<ISubtextContext>(); context.Setup(c => c.Repository).Returns(repository.Object); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://subtextproject.com/")); context.Setup(c => c.HttpContext.Request.QueryString).Returns(queryString); context.Stub(c => c.HttpContext.Response.ContentType); context.Setup(c => c.HttpContext.Response.Output).Returns(new StringWriter()); context.SetupUrlHelper(new Mock<BlogUrlHelper>()); var writer = new Mock<OpmlWriter>(); writer.Setup(w => w.Write(It.IsAny<IEnumerable<Blog>>(), It.IsAny<TextWriter>(), It.IsAny<BlogUrlHelper>())); var handler = new OpmlHandler(context.Object, writer.Object, new LazyNotNull<HostInfo>(CreateHostInfo)); //act handler.ProcessRequest(); //assert Assert.AreEqual("text/xml", context.Object.HttpContext.Response.ContentType); }
public void CreateWelcomeContent_CreatesIntroBlogPostAndCategories() { // arrange var installationManager = new InstallationManager(new Mock <IInstaller>().Object, null); var repository = new Mock <ObjectRepository>(); var entryPublisher = new Mock <IEntryPublisher>(); Entry entry = null; entryPublisher.Setup(p => p.Publish(It.Is <Entry>(e => e.PostType == PostType.BlogPost))).Callback <Entry>(e => entry = e); var urlHelper = new Mock <BlogUrlHelper>(); urlHelper.Setup(u => u.AdminUrl("")).Returns("/admin/default.aspx"); urlHelper.Setup(u => u.EntryUrl(It.Is <Entry>(e => e.PostType == PostType.Story))).Returns <Entry>(e => "/articles/" + e.EntryName + ".aspx"); urlHelper.Setup(u => u.HostAdminUrl("default.aspx")).Returns("/hostadmin/default.aspx"); var context = new Mock <ISubtextContext>(); context.SetupUrlHelper(urlHelper); context.Setup(c => c.Repository).Returns(repository.Object); var blog = new Blog { Id = 123, Author = "TestAuthor" }; // act installationManager.CreateWelcomeContent(context.Object, entryPublisher.Object, blog); // assert Assert.AreEqual(entry.Title, "Welcome to Subtext!"); Assert.AreEqual(entry.EntryName, "welcome-to-subtext"); Assert.Contains(entry.Body, @"<a href=""/admin/default.aspx"); Assert.Contains(entry.Body, @"<a href=""/articles/welcome-to-subtext-article.aspx"); Assert.Contains(entry.Body, @"<a href=""/hostadmin/default.aspx"); Assert.IsTrue(entry.AllowComments); Assert.IsTrue(!entry.Body.Contains(@"<a href=""{0}")); Assert.IsTrue(!entry.Body.Contains(@"<a href=""{1}")); Assert.IsTrue(!entry.Body.Contains(@"<a href=""{2}")); }
public void CreateWelcomeContent_CreatesIntroComment() { // arrange var installationManager = new InstallationManager(new Mock<IInstaller>().Object, null); var repository = new Mock<ObjectProvider>(); var entryPublisher = new Mock<IEntryPublisher>(); var urlHelper = new Mock<UrlHelper>(); urlHelper.Setup(u => u.AdminUrl("feedback")).Returns("/admin/feedback/default.aspx"); var context = new Mock<ISubtextContext>(); context.SetupUrlHelper(urlHelper); context.Setup(c => c.Repository).Returns(repository.Object); var blog = new Blog { Id = 123, Author = "TestAuthor" }; FeedbackItem comment = null; repository.Setup(r => r.Create(It.IsAny<FeedbackItem>())).Callback<FeedbackItem>(c => comment = c); // act installationManager.CreateWelcomeContent(context.Object, entryPublisher.Object, blog); // assert Assert.IsTrue(comment.Approved); Assert.AreEqual(comment.Title, "re: Welcome to Subtext!"); Assert.Contains(comment.Body, @"<a href=""/admin/feedback/"); Assert.IsTrue(!comment.Body.Contains(@"<a href=""{1}")); }