public void ExecuteResultWithExplicitViewObject() { // Arrange ControllerBase controller = new Mock <ControllerBase>().Object; HttpContextBase httpContext = CreateHttpContext(); RouteData routeData = new RouteData(); routeData.Values["action"] = _viewName; ControllerContext context = new ControllerContext(httpContext, routeData, controller); Mock <IView> view = new Mock <IView>(MockBehavior.Strict); PartialViewResult result = new PartialViewResultHelper { View = view.Object }; view .Setup(o => o.Render(It.IsAny <ViewContext>(), httpContext.Response.Output)) .Callback <ViewContext, TextWriter>( (viewContext, writer) => { Assert.Same(view.Object, viewContext.View); Assert.Same(result.ViewData, viewContext.ViewData); Assert.Same(result.TempData, viewContext.TempData); Assert.Same(controller, viewContext.Controller); }); // Act result.ExecuteResult(context); // Assert view.Verify(); }
public void EngineLookupFailureThrows() { // Arrange ControllerBase controller = new Mock <ControllerBase>().Object; HttpContextBase httpContext = CreateHttpContext(); RouteData routeData = new RouteData(); routeData.Values["action"] = _viewName; ControllerContext context = new ControllerContext(httpContext, routeData, controller); Mock <IViewEngine> viewEngine = new Mock <IViewEngine>(MockBehavior.Strict); List <IViewEngine> viewEngines = new List <IViewEngine>(); viewEngines.Add(viewEngine.Object); Mock <ViewEngineCollection> viewEngineCollection = new Mock <ViewEngineCollection>( MockBehavior.Strict, viewEngines ); PartialViewResult result = new PartialViewResultHelper { ViewEngineCollection = viewEngineCollection.Object }; viewEngineCollection .Setup(e => e.FindPartialView(It.IsAny <ControllerContext>(), _viewName)) .Returns(new ViewEngineResult(new[] { "location1", "location2" })); viewEngine .Setup( e => e.FindPartialView( It.IsAny <ControllerContext>(), _viewName, It.IsAny <bool>() ) ) .Callback <ControllerContext, string, bool>( (controllerContext, viewName, useCache) => { Assert.Same(httpContext, controllerContext.HttpContext); Assert.Same(routeData, controllerContext.RouteData); } ) .Returns(new ViewEngineResult(new[] { "location1", "location2" })); // Act & Assert Assert.Throws <InvalidOperationException>( () => result.ExecuteResult(context), "The partial view '" + _viewName + "' was not found or no view engine supports the searched locations. The following locations were searched:" + Environment.NewLine + "location1" + Environment.NewLine + "location2" ); viewEngine.Verify(); viewEngineCollection.Verify(); }
public void EmptyViewNameUsesActionNameAsViewName() { // Arrange ControllerBase controller = new Mock <ControllerBase>().Object; HttpContextBase httpContext = CreateHttpContext(); RouteData routeData = new RouteData(); routeData.Values["action"] = _viewName; ControllerContext context = new ControllerContext(httpContext, routeData, controller); Mock <IViewEngine> viewEngine = new Mock <IViewEngine>(MockBehavior.Strict); Mock <IView> view = new Mock <IView>(MockBehavior.Strict); List <IViewEngine> viewEngines = new List <IViewEngine>(); viewEngines.Add(viewEngine.Object); Mock <ViewEngineCollection> viewEngineCollection = new Mock <ViewEngineCollection>(MockBehavior.Strict, viewEngines); PartialViewResult result = new PartialViewResultHelper { ViewEngineCollection = viewEngineCollection.Object }; viewEngine .Setup(e => e.FindPartialView(It.IsAny <ControllerContext>(), _viewName, It.IsAny <bool>())) .Callback <ControllerContext, string, bool>( (controllerContext, viewName, useCache) => { Assert.Same(httpContext, controllerContext.HttpContext); Assert.Same(routeData, controllerContext.RouteData); }) .Returns(new ViewEngineResult(view.Object, viewEngine.Object)); viewEngineCollection .Setup(e => e.FindPartialView(It.IsAny <ControllerContext>(), _viewName)) .Returns(new ViewEngineResult(view.Object, viewEngine.Object)); view .Setup(o => o.Render(It.IsAny <ViewContext>(), httpContext.Response.Output)) .Callback <ViewContext, TextWriter>( (viewContext, writer) => { Assert.Same(view.Object, viewContext.View); Assert.Same(result.ViewData, viewContext.ViewData); Assert.Same(result.TempData, viewContext.TempData); Assert.Same(controller, viewContext.Controller); }); viewEngine .Setup(e => e.ReleaseView(context, It.IsAny <IView>())) .Callback <ControllerContext, IView>( (controllerContext, releasedView) => { Assert.Same(releasedView, view.Object); }); // Act result.ExecuteResult(context); // Assert viewEngine.Verify(); viewEngineCollection.Verify(); view.Verify(); }
public void EmptyViewNameUsesActionNameAsViewName() { // Arrange ControllerBase controller = new Mock<ControllerBase>().Object; HttpContextBase httpContext = CreateHttpContext(); RouteData routeData = new RouteData(); routeData.Values["action"] = _viewName; ControllerContext context = new ControllerContext(httpContext, routeData, controller); Mock<IViewEngine> viewEngine = new Mock<IViewEngine>(MockBehavior.Strict); Mock<IView> view = new Mock<IView>(MockBehavior.Strict); List<IViewEngine> viewEngines = new List<IViewEngine>(); viewEngines.Add(viewEngine.Object); Mock<ViewEngineCollection> viewEngineCollection = new Mock<ViewEngineCollection>(MockBehavior.Strict, viewEngines); PartialViewResult result = new PartialViewResultHelper { ViewEngineCollection = viewEngineCollection.Object }; viewEngine .Expect(e => e.FindPartialView(It.IsAny<ControllerContext>(), _viewName, It.IsAny<bool>())) .Callback<ControllerContext, string>( (controllerContext, viewName) => { Assert.AreSame(httpContext, controllerContext.HttpContext); Assert.AreSame(routeData, controllerContext.RouteData); }) .Returns(new ViewEngineResult(view.Object, viewEngine.Object)); viewEngineCollection .Expect(e => e.FindPartialView(It.IsAny<ControllerContext>(), _viewName)) .Returns(new ViewEngineResult(view.Object, viewEngine.Object)); view .Expect(o => o.Render(It.IsAny<ViewContext>(), httpContext.Response.Output)) .Callback<ViewContext, TextWriter>( (viewContext, writer) => { Assert.AreSame(view.Object, viewContext.View); Assert.AreSame(result.ViewData, viewContext.ViewData); Assert.AreSame(result.TempData, viewContext.TempData); Assert.AreSame(controller, viewContext.Controller); }); viewEngine .Expect(e => e.ReleaseView(context, It.IsAny<IView>())) .Callback<ControllerContext, IView>( (controllerContext, releasedView) => { Assert.AreSame(releasedView, view.Object); }); // Act result.ExecuteResult(context); // Assert viewEngine.Verify(); viewEngineCollection.Verify(); view.Verify(); }
public void EngineLookupFailureThrows() { // Arrange ControllerBase controller = new Mock<ControllerBase>().Object; HttpContextBase httpContext = CreateHttpContext(); RouteData routeData = new RouteData(); routeData.Values["action"] = _viewName; ControllerContext context = new ControllerContext(httpContext, routeData, controller); Mock<IViewEngine> viewEngine = new Mock<IViewEngine>(MockBehavior.Strict); List<IViewEngine> viewEngines = new List<IViewEngine>(); viewEngines.Add(viewEngine.Object); Mock<ViewEngineCollection> viewEngineCollection = new Mock<ViewEngineCollection>(MockBehavior.Strict, viewEngines); PartialViewResult result = new PartialViewResultHelper { ViewEngineCollection = viewEngineCollection.Object }; viewEngineCollection .Expect(e => e.FindPartialView(It.IsAny<ControllerContext>(), _viewName)) .Returns(new ViewEngineResult(new[] { "location1", "location2" })); viewEngine .Expect(e => e.FindPartialView(It.IsAny<ControllerContext>(), _viewName, It.IsAny<bool>())) .Callback<ControllerContext, string>( (controllerContext, viewName) => { Assert.AreSame(httpContext, controllerContext.HttpContext); Assert.AreSame(routeData, controllerContext.RouteData); }) .Returns(new ViewEngineResult(new[] { "location1", "location2" })); // Act & Assert ExceptionHelper.ExpectInvalidOperationException( () => result.ExecuteResult(context), @"The partial view '" + _viewName + @"' was not found. The following locations were searched: location1 location2"); viewEngine.Verify(); viewEngineCollection.Verify(); }
public void ExecuteResultWithExplicitViewObject() { // Arrange ControllerBase controller = new Mock<ControllerBase>().Object; HttpContextBase httpContext = CreateHttpContext(); RouteData routeData = new RouteData(); routeData.Values["action"] = _viewName; ControllerContext context = new ControllerContext(httpContext, routeData, controller); Mock<IView> view = new Mock<IView>(MockBehavior.Strict); PartialViewResult result = new PartialViewResultHelper { View = view.Object }; view .Expect(o => o.Render(It.IsAny<ViewContext>(), httpContext.Response.Output)) .Callback<ViewContext, TextWriter>( (viewContext, writer) => { Assert.AreSame(view.Object, viewContext.View); Assert.AreSame(result.ViewData, viewContext.ViewData); Assert.AreSame(result.TempData, viewContext.TempData); Assert.AreSame(controller, viewContext.Controller); }); // Act result.ExecuteResult(context); // Assert view.Verify(); }