コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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"));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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.
        }
コード例 #7
0
        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());
        }
コード例 #8
0
        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"));
        }
コード例 #9
0
ファイル: CacherTests.cs プロジェクト: rsaladrigas/Subtext
        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);
        }
コード例 #10
0
ファイル: CacherTests.cs プロジェクト: rsaladrigas/Subtext
        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.
        }
コード例 #11
0
ファイル: CacherTests.cs プロジェクト: rsaladrigas/Subtext
        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);
        }
コード例 #12
0
ファイル: CacherTests.cs プロジェクト: rsaladrigas/Subtext
        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);
        }
コード例 #13
0
 public static Mock <ISubtextContext> SetupRequestContext(this Mock <ISubtextContext> context,
                                                          Mock <HttpContextBase> httpContext, RouteData routeData)
 {
     return(context.SetupRequestContext(httpContext, routeData, null));
 }