public void RenderWithViewPageAndStartPageLookupExecutesStartPage() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); Mock <ViewContext> viewContextMock = new Mock <ViewContext>(); viewContextMock.Setup(vc => vc.HttpContext.Items).Returns(new Dictionary <object, object>()); MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock <IViewPageActivator> activator = new Mock <IViewPageActivator>(MockBehavior.Strict); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", null, true, new[] { "cshtml" }, activator.Object); Mock <ViewStartPage> startPage = new Mock <ViewStartPage>(); startPage.Setup(sp => sp.ExecutePageHierarchy()).Verifiable(); view.StartPageLookup = (WebPageRenderingBase page, string fileName, IEnumerable <string> extensions) => { Assert.Equal(viewPage, page); Assert.Equal("_ViewStart", fileName); Assert.Equal(new[] { "cshtml" }, extensions.ToArray()); return(startPage.Object); }; view.BuildManager = buildManager; // Act view.Render(viewContextMock.Object, new Mock <TextWriter>().Object); // Assert startPage.Verify(sp => sp.ExecutePageHierarchy(), Times.Once()); }
public void RenderWithViewPageAndNoStartPageLookupRendersView() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); Mock <ViewContext> viewContextMock = new Mock <ViewContext>(); viewContextMock.Setup(vc => vc.HttpContext.Items).Returns(new Dictionary <object, object>()); viewContextMock.Setup(vc => vc.HttpContext.Request.IsLocal).Returns(false); MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock <IViewPageActivator> activator = new Mock <IViewPageActivator>(MockBehavior.Strict); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", null, false, Enumerable.Empty <string>(), activator.Object); view.StartPageLookup = (WebPageRenderingBase p, string n, IEnumerable <string> e) => { Assert.True(false, "ViewStart page lookup should not be called"); return(null); }; view.BuildManager = buildManager; // Act view.Render(viewContextMock.Object, new Mock <TextWriter>().Object); // Assert Assert.Null(viewPage.Layout); Assert.Equal("", viewPage.OverridenLayoutPath); Assert.Same(viewContextMock.Object, viewPage.ViewContext); Assert.Equal("~/viewPath", viewPage.VirtualPath); }
public void RenderWithViewPageAndLayoutPageRendersView() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); Mock <ViewContext> viewContext = new Mock <ViewContext>(); Mock <HttpContextBase> httpContext = new Mock <HttpContextBase>(); Mock <HttpRequestBase> httpRequest = new Mock <HttpRequestBase>(); httpRequest.SetupGet(r => r.IsLocal).Returns(false); httpRequest.SetupGet(r => r.Browser.IsMobileDevice).Returns(false); httpRequest.SetupGet(r => r.Cookies).Returns(new HttpCookieCollection()); httpContext.SetupGet(c => c.Request).Returns(httpRequest.Object); httpContext.SetupGet(c => c.Response.Cookies).Returns(new HttpCookieCollection()); httpContext.SetupGet(c => c.Items).Returns(new Hashtable()); viewContext.SetupGet(v => v.HttpContext).Returns(httpContext.Object); MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock <IViewPageActivator> activator = new Mock <IViewPageActivator>(MockBehavior.Strict); Mock <WebPage> layoutPage = new Mock <WebPage> { CallBase = true }; layoutPage.Setup(c => c.Execute()).Callback(() => layoutPage.Object.RenderBody()); Mock <IVirtualPathFactory> virtualPathFactory = new Mock <IVirtualPathFactory>( MockBehavior.Strict ); virtualPathFactory.Setup(f => f.Exists("~/layoutPath")).Returns(true); virtualPathFactory .Setup(f => f.CreateInstance("~/layoutPath")) .Returns(layoutPage.Object); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView( controllerContext, "~/viewPath", "~/layoutPath", false, Enumerable.Empty <string>(), activator.Object ); view.BuildManager = buildManager; view.VirtualPathFactory = virtualPathFactory.Object; view.DisplayModeProvider = DisplayModeProvider.Instance; // Act view.Render(viewContext.Object, TextWriter.Null); // Assert Assert.Equal("~/layoutPath", viewPage.Layout); Assert.Equal("~/layoutPath", viewPage.OverridenLayoutPath); Assert.Same(viewContext.Object, viewPage.ViewContext); Assert.Equal("~/viewPath", viewPage.VirtualPath); }
public void RenderWithViewPageAndLayoutPageRendersView() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); ViewContext context = new Mock <ViewContext>().Object; MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock <IViewPageActivator> activator = new Mock <IViewPageActivator>(MockBehavior.Strict); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", "~/layoutPath", false, Enumerable.Empty <string>(), activator.Object); view.BuildManager = buildManager; // Act view.Render(context, new Mock <TextWriter>().Object); // Assert Assert.IsNull(viewPage.Layout); Assert.AreEqual("~/layoutPath", viewPage.OverridenLayoutPath); Assert.AreSame(context, viewPage.ViewContext); Assert.AreEqual("~/viewPath", viewPage.VirtualPath); }
public void RenderWithViewPageAndLayoutPageRendersView() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); Mock<ViewContext> viewContext = new Mock<ViewContext>(); Mock<HttpContextBase> httpContext = new Mock<HttpContextBase>(); Mock<HttpRequestBase> httpRequest = new Mock<HttpRequestBase>(); httpRequest.SetupGet(r => r.IsLocal).Returns(false); httpRequest.SetupGet(r => r.Browser.IsMobileDevice).Returns(false); httpRequest.SetupGet(r => r.Cookies).Returns(new HttpCookieCollection()); httpContext.SetupGet(c => c.Request).Returns(httpRequest.Object); httpContext.SetupGet(c => c.Response.Cookies).Returns(new HttpCookieCollection()); httpContext.SetupGet(c => c.Items).Returns(new Hashtable()); viewContext.SetupGet(v => v.HttpContext).Returns(httpContext.Object); MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock<IViewPageActivator> activator = new Mock<IViewPageActivator>(MockBehavior.Strict); Mock<WebPage> layoutPage = new Mock<WebPage> { CallBase = true }; layoutPage.Setup(c => c.Execute()).Callback(() => layoutPage.Object.RenderBody()); Mock<IVirtualPathFactory> virtualPathFactory = new Mock<IVirtualPathFactory>(MockBehavior.Strict); virtualPathFactory.Setup(f => f.Exists("~/layoutPath")).Returns(true); virtualPathFactory.Setup(f => f.CreateInstance("~/layoutPath")).Returns(layoutPage.Object); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", "~/layoutPath", false, Enumerable.Empty<string>(), activator.Object); view.BuildManager = buildManager; view.VirtualPathFactory = virtualPathFactory.Object; view.DisplayModeProvider = DisplayModeProvider.Instance; // Act view.Render(viewContext.Object, TextWriter.Null); // Assert Assert.Equal("~/layoutPath", viewPage.Layout); Assert.Equal("~/layoutPath", viewPage.OverridenLayoutPath); Assert.Same(viewContext.Object, viewPage.ViewContext); Assert.Equal("~/viewPath", viewPage.VirtualPath); }
public void RenderWithViewPageAndStartPageLookupExecutesStartPage() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); Mock<ViewContext> viewContextMock = new Mock<ViewContext>(); viewContextMock.Setup(vc => vc.HttpContext.Items).Returns(new Dictionary<object, object>()); MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock<IViewPageActivator> activator = new Mock<IViewPageActivator>(MockBehavior.Strict); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", null, true, new[] { "cshtml" }, activator.Object); Mock<ViewStartPage> startPage = new Mock<ViewStartPage>(); startPage.Setup(sp => sp.ExecutePageHierarchy()).Verifiable(); view.StartPageLookup = (WebPageRenderingBase page, string fileName, IEnumerable<string> extensions) => { Assert.Equal(viewPage, page); Assert.Equal("_ViewStart", fileName); Assert.Equal(new[] { "cshtml" }, extensions.ToArray()); return startPage.Object; }; view.BuildManager = buildManager; // Act view.Render(viewContextMock.Object, new Mock<TextWriter>().Object); // Assert startPage.Verify(sp => sp.ExecutePageHierarchy(), Times.Once()); }
public void RenderWithViewPageAndNoStartPageLookupRendersView() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); Mock<ViewContext> viewContextMock = new Mock<ViewContext>(); viewContextMock.Setup(vc => vc.HttpContext.Items).Returns(new Dictionary<object, object>()); viewContextMock.Setup(vc => vc.HttpContext.Request.IsLocal).Returns(false); MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock<IViewPageActivator> activator = new Mock<IViewPageActivator>(MockBehavior.Strict); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", null, false, Enumerable.Empty<string>(), activator.Object); view.StartPageLookup = (WebPageRenderingBase p, string n, IEnumerable<string> e) => { Assert.True(false, "ViewStart page lookup should not be called"); return null; }; view.BuildManager = buildManager; // Act view.Render(viewContextMock.Object, new Mock<TextWriter>().Object); // Assert Assert.Null(viewPage.Layout); Assert.Equal("", viewPage.OverridenLayoutPath); Assert.Same(viewContextMock.Object, viewPage.ViewContext); Assert.Equal("~/viewPath", viewPage.VirtualPath); }
public void RenderWithViewPageAndLayoutPageRendersView() { // Arrange StubWebViewPage viewPage = new StubWebViewPage(); ViewContext context = new Mock<ViewContext>().Object; MockBuildManager buildManager = new MockBuildManager("~/viewPath", typeof(object)); Mock<IViewPageActivator> activator = new Mock<IViewPageActivator>(MockBehavior.Strict); ControllerContext controllerContext = new ControllerContext(); activator.Setup(l => l.Create(controllerContext, typeof(object))).Returns(viewPage); RazorView view = new RazorView(controllerContext, "~/viewPath", "~/layoutPath", false, Enumerable.Empty<string>(), activator.Object); view.BuildManager = buildManager; // Act view.Render(context, new Mock<TextWriter>().Object); // Assert Assert.IsNull(viewPage.Layout); Assert.AreEqual("~/layoutPath", viewPage.OverridenLayoutPath); Assert.AreSame(context, viewPage.ViewContext); Assert.AreEqual("~/viewPath", viewPage.VirtualPath); }