Пример #1
0
        public async Task ExecuteAsync_ThrowsIfPartialViewCannotBeFound()
        {
            // Arrange
            var expected = string.Join(Environment.NewLine,
                                       "The view 'Components/Invoke/some-view' was not found. The following locations were searched:",
                                       "view-location1",
                                       "view-location2",
                                       "view-location3",
                                       "view-location4");

            var view = Mock.Of <IView>();

            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.GetView(/*executingFilePath*/ null, "some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.NotFound("some-view", new[] { "view-location1", "view-location2" }))
            .Verifiable();
            viewEngine
            .Setup(v => v.FindView(It.IsAny <ActionContext>(), "Components/Invoke/some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.NotFound(
                         "Components/Invoke/some-view",
                         new[] { "view-location3", "view-location4" }))
            .Verifiable();

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider());

            var result = new ViewViewComponentResult
            {
                ViewEngine = viewEngine.Object,
                ViewName   = "some-view",
                ViewData   = viewData,
                TempData   = _tempDataDictionary,
            };

            var viewComponentContext = GetViewComponentContext(view, viewData);

            // Act and Assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(
                () => result.ExecuteAsync(viewComponentContext));

            Assert.Equal(expected, ex.Message);
        }
Пример #2
0
        public async Task ExecuteAsync_RendersPartialViews()
        {
            // Arrange
            var view       = Mock.Of <IView>();
            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine.Setup(e => e.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>()))
            .Returns(ViewEngineResult.Found("some-view", view))
            .Verifiable();
            var viewData             = new ViewDataDictionary(new EmptyModelMetadataProvider());
            var result               = new ViewViewComponentResult(viewEngine.Object, "some-view", viewData);
            var viewComponentContext = GetViewComponentContext(view, viewData);

            // Act
            await result.ExecuteAsync(viewComponentContext);

            // Assert
            viewEngine.Verify();
        }
Пример #3
0
        public async Task ExecuteAsync_ResolvesViewEngineFromServiceProvider_IfNoViewEngineIsExplicitlyProvided()
        {
            // Arrange
            var view = Mock.Of <IView>();

            var viewEngine = new Mock <ICompositeViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.GetView(/*executingFilePath*/ null, "some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.NotFound("some-view", Enumerable.Empty <string>()))
            .Verifiable();
            viewEngine
            .Setup(v => v.FindView(It.IsAny <ActionContext>(), "Components/Invoke/some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.Found("Components/Invoke/some-view", view))
            .Verifiable();

            var serviceProvider = new Mock <IServiceProvider>();

            serviceProvider.Setup(p => p.GetService(typeof(ICompositeViewEngine)))
            .Returns(viewEngine.Object);
            serviceProvider.Setup(p => p.GetService(typeof(DiagnosticSource)))
            .Returns(new DiagnosticListener("Test"));

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider());

            var result = new ViewViewComponentResult
            {
                ViewName = "some-view",
                ViewData = viewData,
                TempData = _tempDataDictionary,
            };

            var viewComponentContext = GetViewComponentContext(view, viewData);

            viewComponentContext.ViewContext.HttpContext.RequestServices = serviceProvider.Object;

            // Act
            await result.ExecuteAsync(viewComponentContext);

            // Assert
            viewEngine.Verify();
            serviceProvider.Verify();
        }
Пример #4
0
        public void Execute_ResolvesView_AndWritesDiagnosticSource()
        {
            // Arrange
            var view = new Mock <IView>(MockBehavior.Strict);

            view.Setup(v => v.RenderAsync(It.IsAny <ViewContext>()))
            .Returns(Task.FromResult(result: true))
            .Verifiable();

            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.FindView(It.IsAny <ActionContext>(), "Components/Invoke/Default", /*isMainPage*/ false))
            .Returns(ViewEngineResult.Found("Components/Invoke/Default", view.Object))
            .Verifiable();

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider());

            var result = new ViewViewComponentResult
            {
                ViewEngine = viewEngine.Object,
                ViewData   = viewData,
                TempData   = _tempDataDictionary,
            };

            var adapter = new TestDiagnosticListener();

            var viewComponentContext = GetViewComponentContext(view.Object, viewData, adapter);

            // Act
            result.Execute(viewComponentContext);

            // Assert
            viewEngine.Verify();
            view.Verify();

            Assert.NotNull(adapter.ViewComponentBeforeViewExecute?.ActionDescriptor);
            Assert.NotNull(adapter.ViewComponentBeforeViewExecute?.ViewComponentContext);
            Assert.NotNull(adapter.ViewComponentBeforeViewExecute?.View);
            Assert.NotNull(adapter.ViewComponentAfterViewExecute?.ActionDescriptor);
            Assert.NotNull(adapter.ViewComponentAfterViewExecute?.ViewComponentContext);
            Assert.NotNull(adapter.ViewComponentAfterViewExecute?.View);
        }
Пример #5
0
        public void Execute_DoesNotWrapThrownExceptionsInAggregateExceptions()
        {
            // Arrange
            var expected = new IndexOutOfRangeException();

            var view = new Mock <IView>();

            view.Setup(v => v.RenderAsync(It.IsAny <ViewContext>()))
            .Throws(expected)
            .Verifiable();

            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.GetView(/*executingFilePath*/ null, "some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.NotFound("some-view", Enumerable.Empty <string>()))
            .Verifiable();
            viewEngine
            .Setup(v => v.FindView(It.IsAny <ActionContext>(), "Components/Invoke/some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.Found("Components/Invoke/some-view", view.Object))
            .Verifiable();

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider());

            var result = new ViewViewComponentResult
            {
                ViewEngine = viewEngine.Object,
                ViewName   = "some-view",
                ViewData   = viewData,
                TempData   = _tempDataDictionary,
            };

            var viewComponentContext = GetViewComponentContext(view.Object, viewData);

            // Act
            var actual = Record.Exception(() => result.Execute(viewComponentContext));

            // Assert
            Assert.Same(expected, actual);
            view.Verify();
        }
        public void Execute_CallsFindPartialView_WithExpectedPath()
        {
            // Arrange
            var viewEngine = new Mock <ICompositeViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(),
                                          It.Is <string>(view => view.Contains("Components"))))
            .Returns(ViewEngineResult.Found(string.Empty, new Mock <IView>().Object))
            .Verifiable();

            var viewData         = new ViewDataDictionary(new EmptyModelMetadataProvider());
            var componentContext = GetViewComponentContext(new Mock <IView>().Object, viewData);
            var componentResult  = new ViewViewComponentResult();

            componentResult.ViewEngine = viewEngine.Object;
            componentResult.ViewData   = viewData;

            // Act & Assert
            componentResult.Execute(componentContext);
            viewEngine.Verify();
        }
Пример #7
0
        public void Execute_ThrowsIfPartialViewCannotBeFound()
        {
            // Arrange
            var expected = string.Join(Environment.NewLine,
                                       "The view 'Components/Object/some-view' was not found. The following locations were searched:",
                                       "location1",
                                       "location2.");
            var view       = Mock.Of <IView>();
            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine.Setup(e => e.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>()))
            .Returns(ViewEngineResult.NotFound("some-view", new[] { "location1", "location2" }))
            .Verifiable();
            var viewData             = new ViewDataDictionary(new EmptyModelMetadataProvider());
            var result               = new ViewViewComponentResult(viewEngine.Object, "some-view", viewData);
            var viewComponentContext = GetViewComponentContext(view, viewData);

            // Act and Assert
            var ex = Assert.Throws <InvalidOperationException>(() => result.Execute(viewComponentContext));

            Assert.Equal(expected, ex.Message);
        }
Пример #8
0
        public void Execute_RendersPartialViews()
        {
            // Arrange
            var view = new Mock <IView>();

            view.Setup(v => v.RenderAsync(It.IsAny <ViewContext>()))
            .Returns(Task.FromResult(result: true))
            .Verifiable();

            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.GetView(/*executingFilePath*/ null, "some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.NotFound("some-view", Enumerable.Empty <string>()))
            .Verifiable();
            viewEngine
            .Setup(v => v.FindView(It.IsAny <ActionContext>(), "Components/Invoke/some-view", /*isMainPage*/ false))
            .Returns(ViewEngineResult.Found("Components/Invoke/some-view", view.Object))
            .Verifiable();

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider());

            var result = new ViewViewComponentResult
            {
                ViewEngine = viewEngine.Object,
                ViewName   = "some-view",
                ViewData   = viewData,
                TempData   = _tempDataDictionary,
            };

            var viewComponentContext = GetViewComponentContext(view.Object, viewData);

            // Act
            result.Execute(viewComponentContext);

            // Assert
            viewEngine.Verify();
            view.Verify();
        }
Пример #9
0
        public async Task ExecuteAsync_ThrowsIfPartialViewCannotBeFound()
        {
            // Arrange
            var expected =
                @"The view 'Components/Object/some-view' was not found. The following locations were searched:
foo
bar.";
            var view       = Mock.Of <IView>();
            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine.Setup(e => e.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>()))
            .Returns(ViewEngineResult.NotFound("some-view", new[] { "foo", "bar" }))
            .Verifiable();
            var viewData             = new ViewDataDictionary(new EmptyModelMetadataProvider());
            var result               = new ViewViewComponentResult(viewEngine.Object, "some-view", viewData);
            var viewComponentContext = GetViewComponentContext(view, viewData);

            // Act and Assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(
                async() => await result.ExecuteAsync(viewComponentContext));

            Assert.Equal(expected, ex.Message);
        }
Пример #10
0
        public void Execute_CallsFindPartialView_WithExpectedPath_WhenViewNameIsSpecified(string viewName)
        {
            // Arrange
            var viewEngine = new Mock <ICompositeViewEngine>(MockBehavior.Strict);

            viewEngine
            .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), viewName))
            .Returns(ViewEngineResult.Found(string.Empty, new Mock <IView>().Object))
            .Verifiable();
            var viewData         = new ViewDataDictionary(new EmptyModelMetadataProvider());
            var componentContext = GetViewComponentContext(new Mock <IView>().Object, viewData);
            var componentResult  = new ViewViewComponentResult
            {
                ViewEngine = viewEngine.Object,
                ViewData   = viewData,
                ViewName   = viewName,
                TempData   = _tempDataDictionary,
            };

            // Act & Assert
            componentResult.Execute(componentContext);
            viewEngine.Verify();
        }
Пример #11
0
        public void Execute_RendersPartialViews()
        {
            // Arrange
            var view = new Mock <IView>();

            view.Setup(v => v.RenderAsync(It.IsAny <ViewContext>()))
            .Returns(Task.FromResult(result: true))
            .Verifiable();
            var viewEngine = new Mock <IViewEngine>(MockBehavior.Strict);

            viewEngine.Setup(e => e.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>()))
            .Returns(ViewEngineResult.Found("some-view", view.Object))
            .Verifiable();
            var viewData             = new ViewDataDictionary(new EmptyModelMetadataProvider());
            var result               = new ViewViewComponentResult(viewEngine.Object, "some-view", viewData);
            var viewComponentContext = GetViewComponentContext(view.Object, viewData);

            // Act
            result.Execute(viewComponentContext);

            // Assert
            viewEngine.Verify();
            view.Verify();
        }
        public async Task ExecuteAsync_ResolvesViewEngineFromServiceProvider_IfNoViewEngineIsExplicitlyProvided()
        {
            // Arrange
            var view = Mock.Of <IView>();

            var viewEngine = new Mock <ICompositeViewEngine>(MockBehavior.Strict);

            viewEngine.Setup(e => e.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>()))
            .Returns(ViewEngineResult.Found("some-view", view))
            .Verifiable();

            var serviceProvider = new Mock <IServiceProvider>();

            serviceProvider.Setup(p => p.GetService(typeof(ICompositeViewEngine)))
            .Returns(viewEngine.Object);

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider());

            var result = new ViewViewComponentResult
            {
                ViewName = "some-view",
                ViewData = viewData,
                TempData = _tempDataDictionary,
            };

            var viewComponentContext = GetViewComponentContext(view, viewData);

            viewComponentContext.ViewContext.HttpContext.RequestServices = serviceProvider.Object;

            // Act
            await result.ExecuteAsync(viewComponentContext);

            // Assert
            viewEngine.Verify();
            serviceProvider.Verify();
        }