public void GetEntryFromRequest_WithIdInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/123.aspx"); var routeData = new RouteData(); routeData.Values.Add("id", "123"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData, new Blog { Id = 123 }) .Setup(c => c.Repository.GetEntry(123, true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); }
public void GetEntryFromRequest_WithSlugInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */ }) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); Assert.AreEqual("the-slug", entry.EntryName); }
public void InitializeControls_WithLocalRequestAndReferrerInQueryString_LoadsMoreResultsControl() { // arrange var page = new SubtextMasterPage(); var context = new Mock <ISubtextContext>(); page.SubtextContext = context.Object; context.Setup(c => c.Blog).Returns(new Blog { Id = 123 }); context.Setup(c => c.HttpContext.Request.UrlReferrer).Returns((Uri)null); context.Setup(c => c.HttpContext.Request.IsLocal).Returns(true); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://example.com/")); var queryString = new NameValueCollection { { "referrer", "http://bing.com/?q=test" } }; context.Setup(c => c.HttpContext.Request.QueryString).Returns(queryString); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); context.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */ }) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); page.SetControls(new[] { "Test" }); var loader = new Mock <ISkinControlLoader>(); loader.Setup(l => l.LoadControl("MoreResults")).Returns(new UserControl()); var searchEngine = new Mock <ISearchEngineService>(); searchEngine.Setup(s => s.Search(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())).Returns(new[] { new SearchEngineResult() }); page.SearchEngineService = searchEngine.Object; // act page.InitializeControls(loader.Object); // assert loader.Verify(l => l.LoadControl("Test")); }
public void GetEntryFromRequest_WithEntryHavingEntryNameButIdInRouteDataMatchingEntryInRepository_RedirectsToUrlWithSlug() { //arrange var repository = new Mock <ObjectProvider>(); var entry = new Entry(PostType.BlogPost) { Id = 123, EntryName = "testing-slug", Title = "Testing 123" }; repository.Setup(r => r.GetEntry(123, true, true)).Returns(entry); var urlHelper = new Mock <UrlHelper>(); urlHelper.Setup(u => u.EntryUrl(It.IsAny <Entry>())).Returns("/archive/testing-slug.aspx"); UnitTestHelper.SetupBlog(); var response = new Mock <HttpResponseBase>(); response.Setup(r => r.End()); response.SetupSet(r => r.StatusCode, 301); response.SetupSet(r => r.StatusDescription, "301 Moved Permanently"); response.SetupSet(r => r.RedirectLocation, "http://localhost/archive/testing-slug.aspx"); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/testing-slug.aspx"); httpContext.Setup(c => c.Response).Returns(response.Object); var routeData = new RouteData(); routeData.Values.Add("id", "123"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupUrlHelper(urlHelper) .SetupRepository(repository.Object) .SetupBlog(new Blog { Host = "localhost" }); subtextContext.Setup(c => c.HttpContext).Returns(httpContext.Object); //act Entry cachedEntry = Cacher.GetEntryFromRequest(true /* allowRedirect */, subtextContext.Object); //assert response.VerifySet(r => r.StatusCode, 301); response.VerifySet(r => r.StatusDescription, "301 Moved Permanently"); response.VerifySet(r => r.RedirectLocation, "http://localhost/archive/testing-slug.aspx"); Assert.AreEqual(123, cachedEntry.Id); Assert.AreEqual("Testing 123", cachedEntry.Title); }
public static Mock <ISubtextContext> SetupRequestContext(this Mock <ISubtextContext> context, Mock <HttpContextBase> httpContext, RouteData routeData, Blog blog) { httpContext = httpContext ?? new Mock <HttpContextBase>(); routeData = routeData ?? new RouteData(); httpContext.Setup(c => c.Items).Returns(new Hashtable()); var requestContext = new RequestContext(httpContext.Object, routeData); context.SetupRequestContext(requestContext); context.Setup(c => c.Cache).Returns(new TestCache()); context.Setup(c => c.Blog).Returns(blog ?? new Blog()); context.Setup(c => c.HttpContext.Items).Returns(new Hashtable()); return(context); }
public void GetEntryFromRequest_WithNonExistentEntry_DoesNotThrowNullReferenceException() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/99999.aspx"); var routeData = new RouteData(); routeData.Values.Add("id", "999999"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .Setup(c => c.Repository.GetEntry(It.IsAny <int>(), true, true)).Returns((Entry)null); //act Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert //None needed. }
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 InitializeControls_WithReferrer_LoadsMoreResultsControl() { // arrange var page = new SubtextMasterPage(); var context = new Mock<ISubtextContext>(); context.Setup(c => c.Blog).Returns(new Blog {Id = 123}); context.Setup(c => c.HttpContext.Request.UrlReferrer).Returns(new Uri("http://bing.com/?q=test")); context.Setup(c => c.HttpContext.Request.IsLocal).Returns(false); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://example.com/")); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); context.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */}) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); page.SubtextContext = context.Object; page.SetControls(new[] { "Test" }); var searchEngine = new Mock<ISearchEngineService>(); searchEngine.Setup(s => s.Search(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>())).Returns(new[]{new SearchEngineResult()}); page.SearchEngineService = searchEngine.Object; var loader = new Mock<ISkinControlLoader>(); loader.Setup(l => l.LoadControl("MoreResults")).Returns(new UserControl()); // act page.InitializeControls(loader.Object); // assert loader.Verify(l => l.LoadControl("Test")); }
public void GetEntryFromRequest_WithSlugInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); var subtextContext = new Mock<ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */}) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); Assert.AreEqual("the-slug", entry.EntryName); }
public void GetEntryFromRequest_WithNonExistentEntry_DoesNotThrowNullReferenceException() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/99999.aspx"); var routeData = new RouteData(); routeData.Values.Add("id", "999999"); var subtextContext = new Mock<ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .Setup(c => c.Repository.GetEntry(It.IsAny<int>(), true, true)).Returns((Entry)null); //act Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert //None needed. }
public void GetEntryFromRequest_WithIdInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/123.aspx"); var routeData = new RouteData(); routeData.Values.Add("id", "123"); var subtextContext = new Mock<ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData, new Blog { Id = 123 }) .Setup(c => c.Repository.GetEntry(123, true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); }
public void GetEntryFromRequest_WithEntryHavingEntryNameButIdInRouteDataMatchingEntryInRepository_RedirectsToUrlWithSlug() { //arrange var repository = new Mock<ObjectRepository>(); var entry = new Entry(PostType.BlogPost) { Id = 123, EntryName = "testing-slug", Title = "Testing 123" }; repository.Setup(r => r.GetEntry(123, true, true)).Returns(entry); var urlHelper = new Mock<BlogUrlHelper>(); urlHelper.Setup(u => u.EntryUrl(It.IsAny<Entry>())).Returns("/archive/testing-slug.aspx"); UnitTestHelper.SetupBlog(); var response = new Mock<HttpResponseBase>(); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/testing-slug.aspx"); httpContext.Setup(c => c.Response).Returns(response.Object); var routeData = new RouteData(); routeData.Values.Add("id", "123"); var subtextContext = new Mock<ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupUrlHelper(urlHelper) .SetupRepository(repository.Object) .SetupBlog(new Blog { Host = "localhost" }); subtextContext.Setup(c => c.HttpContext).Returns(httpContext.Object); //act Entry cachedEntry = Cacher.GetEntryFromRequest(true /* allowRedirect */, subtextContext.Object); //assert response.Verify(r => r.RedirectPermanent("http://localhost/archive/testing-slug.aspx", true)); Assert.AreEqual(123, cachedEntry.Id); Assert.AreEqual("Testing 123", cachedEntry.Title); }
public static Mock <ISubtextContext> SetupRequestContext(this Mock <ISubtextContext> context, Mock <HttpContextBase> httpContext, RouteData routeData) { return(context.SetupRequestContext(httpContext, routeData, null)); }