public void Execute_ResolvesView_WithDefaultAsViewName() { // 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(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>())) .Returns(ViewEngineResult.Found("Default", view.Object)) .Verifiable(); var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider()); var result = new ViewViewComponentResult { ViewEngine = viewEngine.Object, ViewData = viewData }; var viewComponentContext = GetViewComponentContext(view.Object, viewData); // Act result.Execute(viewComponentContext); // Assert viewEngine.Verify(); view.Verify(); }
public void Execute_ResolvesView_WithDefaultAsViewName() { // 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 viewComponentContext = GetViewComponentContext(view.Object, viewData); // Act result.Execute(viewComponentContext); // Assert viewEngine.Verify(); view.Verify(); }
public void Execute_CallsFindView_WithExpectedPath_WhenViewNameIsNullOrEmpty(string viewName) { // Arrange var shortName = "SomeShortName"; var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider()); var componentContext = GetViewComponentContext(new Mock <IView>().Object, viewData); componentContext.ViewComponentDescriptor.ShortName = shortName; var expectedViewName = $"Components/{shortName}/Default"; var viewEngine = new Mock <ICompositeViewEngine>(MockBehavior.Strict); viewEngine .Setup(v => v.FindView(It.IsAny <ActionContext>(), expectedViewName, /*isMainPage*/ false)) .Returns(ViewEngineResult.Found(expectedViewName, new Mock <IView>().Object)) .Verifiable(); var componentResult = new ViewViewComponentResult(); componentResult.ViewEngine = viewEngine.Object; componentResult.ViewData = viewData; componentResult.ViewName = viewName; componentResult.TempData = _tempDataDictionary; // Act & Assert componentResult.Execute(componentContext); viewEngine.Verify(); }
public void Execute_ResolvesView_AndWritesDiagnosticListener() { // 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_ThrowsIfPartialViewCannotBeFound_MessageUsesAllLocations() { // Arrange var expected = string.Join(Environment.NewLine, "The view 'Components/Invoke/some-view' was not found. The following locations were searched:", "location1", "location2", "location3", "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[] { "location1", "location2" })) .Verifiable(); viewEngine .Setup(v => v.FindView(It.IsAny <ActionContext>(), "Components/Invoke/some-view", /*isMainPage*/ false)) .Returns(ViewEngineResult.NotFound("Components/Invoke/some-view", new[] { "location3", "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 = 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 void Execute_CallsFindView_WithExpectedPath_WhenViewNameIsSpecified(string viewName) { // Arrange var viewEngine = new Mock <ICompositeViewEngine>(MockBehavior.Strict); viewEngine .Setup(v => v.GetView(/*executingFilePath*/ null, viewName, /*isMainPage*/ false)) .Returns(ViewEngineResult.Found(viewName, 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(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 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_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("Components/Object/some-view", new[] { "location1", "location2" })) .Verifiable(); var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider()); var result = new ViewViewComponentResult { ViewEngine = viewEngine.Object, ViewName = "some-view", ViewData = 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_ThrowsIfPartialViewCannotBeFound_MessageUsesAllLocations() { // Arrange var expected = string.Join(Environment.NewLine, "The view 'Components/Invoke/some-view' was not found. The following locations were searched:", "location1", "location2", "location3", "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[] { "location1", "location2" })) .Verifiable(); viewEngine .Setup(v => v.FindView(It.IsAny<ActionContext>(), "Components/Invoke/some-view", /*isMainPage*/ false)) .Returns(ViewEngineResult.NotFound("Components/Invoke/some-view", new[] { "location3", "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 = Assert.Throws<InvalidOperationException>(() => result.Execute(viewComponentContext)); Assert.Equal(expected, ex.Message); }
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_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(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 = viewEngine.Object, ViewName = "some-view", ViewData = viewData }; var viewComponentContext = GetViewComponentContext(view.Object, viewData); // Act var actual = Record.Exception(() => result.Execute(viewComponentContext)); // Assert Assert.Same(expected, actual); view.Verify(); }
public void Execute_CallsFindView_WithExpectedPath_WhenViewNameIsSpecified(string viewName) { // Arrange var viewEngine = new Mock<ICompositeViewEngine>(MockBehavior.Strict); viewEngine .Setup(v => v.GetView(/*executingFilePath*/ null, viewName, /*isMainPage*/ false)) .Returns(ViewEngineResult.Found(viewName, 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_CallsFindView_WithExpectedPath_WhenViewNameIsNullOrEmpty(string viewName) { // Arrange var shortName = "SomeShortName"; var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider()); var componentContext = GetViewComponentContext(new Mock<IView>().Object, viewData); componentContext.ViewComponentDescriptor.ShortName = shortName; var expectedViewName = $"Components/{shortName}/Default"; var viewEngine = new Mock<ICompositeViewEngine>(MockBehavior.Strict); viewEngine .Setup(v => v.FindView(It.IsAny<ActionContext>(), expectedViewName, /*isMainPage*/ false)) .Returns(ViewEngineResult.Found(expectedViewName, new Mock<IView>().Object)) .Verifiable(); var componentResult = new ViewViewComponentResult(); componentResult.ViewEngine = viewEngine.Object; componentResult.ViewData = viewData; componentResult.ViewName = viewName; componentResult.TempData = _tempDataDictionary; // Act & Assert componentResult.Execute(componentContext); viewEngine.Verify(); }
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(); }