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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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());
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }