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); }
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(); }
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(); }
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); }
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(); }
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); }
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(); }
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); }
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(); }
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(); }