コード例 #1
0
        public void RazorViewEngineSetsViewPageActivator() {
            // Arrange
            Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
            TestableRazorViewEngine viewEngine = new TestableRazorViewEngine(viewPageActivator.Object);

            //Act & Assert
            Assert.AreEqual(viewPageActivator.Object, viewEngine.ViewPageActivator);
        }
コード例 #2
0
        public void RazorViewEngineSetsViewPageActivator()
        {
            // Arrange
            Mock <IViewPageActivator> viewPageActivator = new Mock <IViewPageActivator>();
            TestableRazorViewEngine   viewEngine        = new TestableRazorViewEngine(viewPageActivator.Object);

            //Act & Assert
            Assert.Equal(viewPageActivator.Object, viewEngine.ViewPageActivator);
        }
コード例 #3
0
        public void CreateView_PassesViewPageActivator() {
            // Arrange
            Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
            TestableRazorViewEngine viewEngine = new TestableRazorViewEngine(viewPageActivator.Object);

            // Act
            RazorView result = (RazorView)viewEngine.CreateView("partial path", "master path");

            // Assert
            Assert.AreEqual(viewEngine.ViewPageActivator, result._viewPageActivator);
        }
コード例 #4
0
        public void CreateView_PassesViewPageActivator()
        {
            // Arrange
            Mock <IViewPageActivator> viewPageActivator = new Mock <IViewPageActivator>();
            TestableRazorViewEngine   viewEngine        = new TestableRazorViewEngine(viewPageActivator.Object);

            // Act
            RazorView result = (RazorView)viewEngine.CreateView("partial path", "master path");

            // Assert
            Assert.Equal(viewEngine.ViewPageActivator, result.ViewPageActivator);
        }
コード例 #5
0
        public void CreatePartialView_ReturnsRazorView()
        {
            // Arrange
            TestableRazorViewEngine viewEngine = new TestableRazorViewEngine();

            // Act
            RazorView result = (RazorView)viewEngine.CreatePartialView("partial path");

            // Assert
            Assert.Equal("partial path", result.ViewPath);
            Assert.Equal(String.Empty, result.LayoutPath);
            Assert.False(result.RunViewStartPages);
        }
コード例 #6
0
        public void CreateView_ReturnsRazorView()
        {
            // Arrange
            TestableRazorViewEngine viewEngine = new TestableRazorViewEngine()
            {
                FileExtensions = new[] { "cshtml", "vbhtml", "razor" }
            };

            // Act
            RazorView result = (RazorView)viewEngine.CreateView("partial path", "master path");

            // Assert
            Assert.Equal("partial path", result.ViewPath);
            Assert.Equal("master path", result.LayoutPath);
            Assert.Equal(new[] { "cshtml", "vbhtml", "razor" }, result.ViewStartFileExtensions.ToArray());
            Assert.True(result.RunViewStartPages);
        }
コード例 #7
0
        public void CreatePartialView_ReturnsRazorView() {
            // Arrange
            TestableRazorViewEngine viewEngine = new TestableRazorViewEngine();

            // Act
            RazorView result = (RazorView)viewEngine.CreatePartialView("partial path");

            // Assert
            Assert.AreEqual("partial path", result.ViewPath);
            Assert.AreEqual(String.Empty, result.LayoutPath);
            Assert.IsFalse(result.RunViewStartPages);
        }
コード例 #8
0
        public void CreateView_ReturnsRazorView() {
            // Arrange
            TestableRazorViewEngine viewEngine = new TestableRazorViewEngine() {
                FileExtensions = new[] { "cshtml", "vbhtml", "razor" }
            };

            // Act
            RazorView result = (RazorView)viewEngine.CreateView("partial path", "master path");

            // Assert
            Assert.AreEqual("partial path", result.ViewPath);
            Assert.AreEqual("master path", result.LayoutPath);
            CollectionAssert.AreEqual(new[] { "cshtml", "vbhtml", "razor" }, result.ViewStartFileExtensions.ToArray());
            Assert.IsTrue(result.RunViewStartPages);
        }
コード例 #9
0
        public void GetPage_ResolvesRelativeToAppRoot_WithRelativePath_IfNoPageExecuting(string pageName)
        {
            // Arrange
            var expectedPageName = $"/{ pageName }";
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(expectedPageName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act
            var result = viewEngine.GetPage(executingFilePath: null, pagePath: pageName);

            // Assert
            Assert.Same(page, result.Page);
            Assert.Equal(pageName, result.Name);
            pageFactory.Verify();
        }
コード例 #10
0
        public void GetView_ResolvesRelativeToAppRoot_WithRelativePath_IfNoPageExecuting(string viewName)
        {
            // Arrange
            var expectedViewName = $"/{ viewName }";
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(expectedViewName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act
            var result = viewEngine.GetView(executingFilePath: null, viewPath: viewName, isMainPage: true);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(viewName, result.ViewName);
            pageFactory.Verify();
            var view = Assert.IsType<RazorView>(result.View);
            Assert.Same(page, view.RazorPage);
        }
コード例 #11
0
        public void GetView_ResolvesRelativeToCurrentPage_WithRelativePath(string viewName)
        {
            // Arrange
            var expectedViewName = $"/Home/{ viewName }";
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(expectedViewName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act
            var result = viewEngine.GetView("/Home/Page.cshtml", viewName, isMainPage: true);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(viewName, result.ViewName);
            pageFactory.Verify();
        }
コード例 #12
0
        public void GetView_UsesGivenPath_WithAppRelativePath(string viewName)
        {
            // Arrange
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(viewName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act
            var result = viewEngine.GetView(executingFilePath: null, viewPath: viewName, isMainPage: true);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(viewName, result.ViewName);
            pageFactory.Verify();
        }
コード例 #13
0
        public void GetView_DoesNotUseViewLocationFormat_WithRelativePath_IfRouteDoesNotContainArea(string viewName)
        {
            // Arrange
            var expectedViewName = "/Home/Test-View.cshtml";
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(expectedViewName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act
            var result = viewEngine.GetView("/Home/Page.cshtml", viewName, isMainPage: true);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(viewName, result.ViewName);
            pageFactory.Verify();
        }
コード例 #14
0
        public void FindView_UsesAreaViewLocationFormat_IfRouteContainsArea()
        {
            // Arrange
            var viewName = "test-view2";
            var expectedViewName = "fake-area-path/foo/bar/test-view2.rzr";
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(expectedViewName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());
            viewEngine.SetLocationFormats(
                new[] { "fake-path1/{1}/{0}.rzr" },
                new[] { "fake-area-path/{2}/{1}/{0}.rzr" });
            var context = GetActionContext(_areaTestContext);

            // Act
            var result = viewEngine.FindView(context, viewName, isMainPage: true);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(viewName, result.ViewName);
            pageFactory.Verify();
        }
コード例 #15
0
        public void FindView_UsesViewLocationFormat_IfRouteDoesNotContainArea()
        {
            // Arrange
            var pageFactory = new Mock<IRazorPageFactoryProvider>();

            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory("fake-path1/bar/test-view.rzr"))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());
            viewEngine.SetLocationFormats(
                new[] { "fake-path1/{1}/{0}.rzr" },
                new[] { "fake-area-path/{2}/{1}/{0}.rzr" });
            var context = GetActionContext(_controllerTestContext);

            // Act
            var result = viewEngine.FindView(context, "test-view", isMainPage: true);

            // Assert
            pageFactory.Verify();
            var view = Assert.IsType<RazorView>(result.View);
            Assert.Same(page, view.RazorPage);
        }
コード例 #16
0
        public void FindView_CreatesDifferentCacheEntries_ForDifferentAreas(bool isMainPage)
        {
            // Arrange
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var areaPage1 = Mock.Of<IRazorPage>();
            var areaPage2 = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory("/Areas/Marketing/Views/Home/Index.cshtml"))
                .Returns(new RazorPageFactoryResult(() => areaPage1, new IChangeToken[0]));
            pageFactory
                .Setup(p => p.CreateFactory("/Areas/Sales/Views/Home/Index.cshtml"))
                .Returns(new RazorPageFactoryResult(() => areaPage2, new IChangeToken[0]));

            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act 1
            var areaContext1 = GetActionContext(new Dictionary<string, object>()
            {
                {"area", "Marketing"},
                {"controller", "Home"},
            });
            var result1 = viewEngine.FindView(areaContext1, "Index", isMainPage);

            // Assert 1
            Assert.NotNull(result1);
            pageFactory.Verify(p => p.CreateFactory("/Areas/Marketing/Views/Home/Index.cshtml"), Times.Once());
            pageFactory.Verify(p => p.CreateFactory("/Areas/Sales/Views/Home/Index.cshtml"), Times.Never());
            var view1 = Assert.IsType<RazorView>(result1.View);
            Assert.Same(areaPage1, view1.RazorPage);

            // Act 2
            var areaContext2 = GetActionContext(new Dictionary<string, object>()
            {
                {"controller", "Home"},
                {"area", "Sales"},
            });
            var result2 = viewEngine.FindView(areaContext2, "Index", isMainPage);

            // Assert 2
            Assert.NotNull(result2);
            pageFactory.Verify(p => p.CreateFactory("/Areas/Marketing/Views/Home/Index.cshtml"), Times.Once());
            pageFactory.Verify(p => p.CreateFactory("/Areas/Sales/Views/Home/Index.cshtml"), Times.Once());
            var view2 = Assert.IsType<RazorView>(result2.View);
            Assert.Same(areaPage2, view2.RazorPage);

            // Act 3
            // Ensure we're getting cached results.
            var result3 = viewEngine.FindView(areaContext1, "Index", isMainPage);
            var result4 = viewEngine.FindView(areaContext2, "Index", isMainPage);

            // Assert 4
            pageFactory.Verify(p => p.CreateFactory("/Areas/Marketing/Views/Home/Index.cshtml"), Times.Once());
            pageFactory.Verify(p => p.CreateFactory("/Areas/Sales/Views/Home/Index.cshtml"), Times.Once());

            var view3 = Assert.IsType<RazorView>(result3.View);
            Assert.Same(areaPage1, view3.RazorPage);
            var view4 = Assert.IsType<RazorView>(result4.View);
            Assert.Same(areaPage2, view4.RazorPage);
        }
コード例 #17
0
        public void GetPage_UsesGivenPath_WithAppRelativePath(string pageName)
        {
            // Arrange
            var pageFactory = new Mock<IRazorPageFactoryProvider>();
            var page = Mock.Of<IRazorPage>();
            pageFactory
                .Setup(p => p.CreateFactory(pageName))
                .Returns(new RazorPageFactoryResult(() => page, new IChangeToken[0]))
                .Verifiable();
            var viewEngine = new TestableRazorViewEngine(
                pageFactory.Object,
                GetOptionsAccessor());

            // Act
            var result = viewEngine.GetPage("~/Another/Place.cshtml", pagePath: pageName);

            // Assert
            Assert.Same(page, result.Page);
            Assert.Equal(pageName, result.Name);
            pageFactory.Verify();
        }