public void ExecuteResult(ControllerContext context, TextWriter writer) { Requires.NotNull("context", context); Requires.NotNull("writer", writer); if (String.IsNullOrEmpty(ViewName)) { ViewName = context.RouteData.GetRequiredString("action"); } ViewEngineResult result = null; if (View == null) { result = ViewEngineCollection.FindPartialView(context, ViewName); View = result.View; } var viewContext = new ViewContext(context, View, ViewData, TempData, writer); View.Render(viewContext, writer); if (result != null) { result.ViewEngine.ReleaseView(context, View); } }
public void FindPartialViewAggregatesAllSearchedLocationsIfAllEnginesFail() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection viewEngineCollection = new ViewEngineCollection(); Mock <IViewEngine> engine1 = new Mock <IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult(new[] { "location1", "location2" }); engine1.Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())).Returns(engine1Result); Mock <IViewEngine> engine2 = new Mock <IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult(new[] { "location3", "location4" }); engine2.Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())).Returns(engine2Result); viewEngineCollection.Add(engine1.Object); viewEngineCollection.Add(engine2.Object); // Act ViewEngineResult result = viewEngineCollection.FindPartialView(context, "partial"); // Assert Assert.Null(result.View); Assert.Equal(4, result.SearchedLocations.Count()); Assert.True(result.SearchedLocations.Contains("location1")); Assert.True(result.SearchedLocations.Contains("location2")); Assert.True(result.SearchedLocations.Contains("location3")); Assert.True(result.SearchedLocations.Contains("location4")); }
public void FindPartialViewReturnsValueFromFirstSuccessfulEngine() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock <IViewEngine> engine1 = new Mock <IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult( new Mock <IView>().Object, engine1.Object ); engine1 .Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())) .Returns(engine1Result); Mock <IViewEngine> engine2 = new Mock <IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult( new Mock <IView>().Object, engine2.Object ); engine2 .Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())) .Returns(engine2Result); collection.Add(engine1.Object); collection.Add(engine2.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Same(engine1Result, result); }
private static string RenderPartialInternal(this HtmlHelper htmlHelper, string partialViewName, ViewDataDictionary viewData, object model, ViewEngineCollection viewEngineCollection) { #if DEBUG if (String.IsNullOrEmpty(partialViewName)) { throw new ArgumentException(@"Empty view", "partialViewName"); } #endif ViewDataDictionary newViewData = model == null ? (viewData == null ? new ViewDataDictionary(htmlHelper.ViewData) : new ViewDataDictionary(viewData)) : (viewData == null ? new ViewDataDictionary(model) : new ViewDataDictionary(viewData) { Model = model }); using (var writer = new StringWriter(CultureInfo.CurrentCulture)) { var newViewContext = new ViewContext(htmlHelper.ViewContext, htmlHelper.ViewContext.View, newViewData, htmlHelper.ViewContext.TempData, writer); var view = viewEngineCollection.FindPartialView(newViewContext, partialViewName).View; view.Render(newViewContext, writer); return(SimpleHtmlMinifier(writer.ToString())); } }
public void FindPartialViewIteratesThroughCollectionUntilFindsSuccessfulEngine() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock <IViewEngine> engine1 = new Mock <IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult( new[] { "location1", "location2" } ); engine1 .Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())) .Returns(engine1Result); Mock <IViewEngine> engine2 = new Mock <IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult( new Mock <IView>().Object, engine2.Object ); engine2 .Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())) .Returns(engine2Result); collection.Add(engine1.Object); collection.Add(engine2.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Same(engine2Result, result); }
public void FindPartialViewIgnoresSearchLocationsFromCache() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; Mock <IViewEngine> engine = new Mock <IViewEngine>(); engine .Setup(e => e.FindPartialView(context, "partial", true)) .Returns(new ViewEngineResult(new[] { "cachePath" })); engine .Setup(e => e.FindPartialView(context, "partial", false)) .Returns(new ViewEngineResult(new[] { "locatorPath" })); ViewEngineCollection collection = new ViewEngineCollection() { engine.Object, }; // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert string searchedLocation = Assert.Single(result.SearchedLocations); Assert.Equal("locatorPath", searchedLocation); engine.Verify(e => e.FindPartialView(context, "partial", true), Times.Once()); engine.Verify(e => e.FindPartialView(context, "partial", false), Times.Once()); }
public void FindPartialViewLooksAtLocatorIfCacheEmpty() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; Mock <IViewEngine> engine = new Mock <IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult( new Mock <IView>().Object, engine.Object ); engine .Setup(e => e.FindPartialView(context, "partial", true)) .Returns(new ViewEngineResult(new[] { "path" })); engine.Setup(e => e.FindPartialView(context, "partial", false)).Returns(engineResult); ViewEngineCollection collection = new ViewEngineCollection() { engine.Object, }; // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Same(engineResult, result); engine.Verify(e => e.FindPartialView(context, "partial", true), Times.Once()); engine.Verify(e => e.FindPartialView(context, "partial", false), Times.Once()); }
public void FindPartialViewDelegatesToResolver() { // Arrange Mock <IView> view = new Mock <IView>(); ControllerContext context = new ControllerContext(); Mock <IViewEngine> locatedEngine = new Mock <IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(view.Object, locatedEngine.Object); locatedEngine.Setup(e => e.FindPartialView(context, "ViewName", true)) .Returns(engineResult); Mock <IViewEngine> secondEngine = new Mock <IViewEngine>(); var resolver = new Mock <IDependencyResolver>(); resolver.Setup(r => r.GetServices(typeof(IViewEngine))).Returns(new IViewEngine[] { locatedEngine.Object, secondEngine.Object }); ViewEngineCollection engines = new ViewEngineCollection(new IViewEngine[0], resolver.Object); // Act ViewEngineResult result = engines.FindPartialView(context, "ViewName"); // Assert Assert.Same(engineResult, result); secondEngine.Verify(e => e.FindPartialView(context, "ViewName", It.IsAny <bool>()), Times.Never()); }
public void FindPartialViewRemovesDuplicateSearchedLocationsFromMultipleEngines() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; Mock <IViewEngine> engine1 = new Mock <IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult(new[] { "repeatLocation", "location1" }); engine1.Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())).Returns(engine1Result); Mock <IViewEngine> engine2 = new Mock <IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult(new[] { "location2", "repeatLocation" }); engine2.Setup(e => e.FindPartialView(context, "partial", It.IsAny <bool>())).Returns(engine2Result); ViewEngineCollection viewEngineCollection = new ViewEngineCollection() { engine1.Object, engine2.Object, }; // Act ViewEngineResult result = viewEngineCollection.FindPartialView(context, "partial"); // Assert var expectedLocations = new[] { "repeatLocation", "location1", "location2" }; Assert.Null(result.View); Assert.Equal(expectedLocations, result.SearchedLocations.ToArray()); }
public void FindPartialViewThrowsIfControllerContextIsNull() { // Arrange ViewEngineCollection collection = new ViewEngineCollection(); // Act & Assert ExceptionHelper.ExpectArgumentNullException( () => collection.FindPartialView(null, "partial"), "controllerContext"); }
private IView FindPartialView(ViewContext viewContext, string partialViewName, ViewEngineCollection viewEngineCollection) { ViewEngineResult result = viewEngineCollection.FindPartialView(viewContext, partialViewName); if (result.View != null) { return(result.View); } throw new Exception("Find Template Error!"); }
public void FindPartialViewThrowsIfPartialViewNameIsEmpty() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); // Act & Assert ExceptionHelper.ExpectArgumentExceptionNullOrEmpty( () => collection.FindPartialView(context, ""), "partialViewName"); }
public void FindPartialViewThrowsIfPartialViewNameIsNull() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); // Act & Assert Assert.ThrowsArgumentNullOrEmpty( () => collection.FindPartialView(context, null), "partialViewName"); }
public void FindPartialViewReturnsNoViewAndEmptySearchedLocationsIfCollectionEmpty() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.IsNull(result.View); Assert.AreEqual(0, result.SearchedLocations.Count()); }
public string SerializeView(ControllerContext context, ViewDataDictionary viewData, TempDataDictionary tempData, string viewName, object model) { viewData.Model = model; using (var sw = new StringWriter()) { // keep getting null reference errors on this line when I write my tests . var viewResult = _viewEngines.FindPartialView(context, viewName); var viewContext = new ViewContext(context, viewResult.View, viewData, tempData, sw); // render the view into the stringwriter class viewResult.View.Render(viewContext, sw); // output the rendered string return(sw.GetStringBuilder().ToString()); } }
public static bool ViewExists(this ViewEngineCollection viewEngines, ControllerContext controllerContext, string viewName, bool isPartial = false) { var result = !isPartial ? viewEngines.FindView(controllerContext, viewName, null) : viewEngines.FindPartialView(controllerContext, viewName); if (result.View != null) { return(true); } LogHelper.Warn <Bootstrap>("No view file found with the name " + viewName); return(false); }
public static bool ViewExists( this ViewEngineCollection viewEngines, ControllerContext controllerContext, string viewName, bool isPartial = false) { var result = !isPartial ? viewEngines.FindView(controllerContext, viewName, null) : viewEngines.FindPartialView(controllerContext, viewName); if (result.View != null) { return(true); } return(false); }
// copied from HtmlHelper.FindPartialView because it's original is internal internal static IView FindPartialView(ViewContext viewContext, string partialViewName, ViewEngineCollection viewEngineCollection) { ViewEngineResult result = viewEngineCollection.FindPartialView(viewContext, partialViewName); if (result.View != null) { return result.View; } StringBuilder builder = new StringBuilder(); foreach (string str in result.SearchedLocations) { builder.AppendLine(); builder.Append(str); } throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "The partial view '{0}' was not found or no view engine supports the searched locations. The following locations were searched:{1}", new object[] { partialViewName, builder })); }
public void FindPartialViewSuccessWithOneEngine() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock <IViewEngine> engine = new Mock <IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(new Mock <IView>().Object, engine.Object); engine.Expect(e => e.FindPartialView(context, "partial", It.IsAny <bool>())).Returns(engineResult); collection.Add(engine.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.AreSame(engineResult, result); }
public static bool ViewExists( this ViewEngineCollection viewEngines, ControllerContext controllerContext, string viewName, bool isPartial = false) { var result = !isPartial ? viewEngines.FindView(controllerContext, viewName, null) : viewEngines.FindPartialView(controllerContext, viewName); if (result.View != null) { return(true); } LogHelper.Info <ViewEngineCollection>("[DocTypeGridEditor] No view file found with the name '{0}'", () => viewName); return(false); }
private IView FindPartialView2(ViewContext viewContext, string partialViewName, ViewEngineCollection engines) { ViewEngineResult partialView = engines.FindPartialView((ControllerContext)viewContext, partialViewName); if (partialView.View != null) { return(partialView.View); } StringBuilder stringBuilder = new StringBuilder(); foreach (string str in partialView.SearchedLocations) { stringBuilder.AppendLine(); stringBuilder.Append(str); } throw new InvalidOperationException(string.Format((IFormatProvider)CultureInfo.CurrentCulture, "Partial view {0} not found in {1}", partialViewName, stringBuilder)); }
public static IView TryLocatePartial(this ViewEngineCollection engines, ViewContext context, string viewName) { var viewResult = engines.FindPartialView(context, viewName); if (viewResult.View == null) { var locationsText = new StringBuilder(); foreach (var location in viewResult.SearchedLocations) { locationsText.AppendLine(); locationsText.Append(location); } throw new InvalidOperationException(string.Format(CouldNotFindView, viewName, locationsText)); } return(viewResult.View); }
// Enable the call to ViewEngineCollection FindPartialView method with useCache=false public static ViewEngineResult FindPartialView(this ViewEngineCollection viewEngineCollection, ControllerContext controllerContext, string partialViewName, bool useCache) { try { var cacheKey = CreateCacheKey(controllerContext, "Partial", partialViewName, string.Empty, (controllerContext.Controller as IDnnController)?.ModuleContext.PortalId ?? 0); var parameters = new object[] { new Func <IViewEngine, ViewEngineResult>(e => e.FindPartialView(controllerContext, partialViewName, false)), false, }; var cacheArg = new CacheItemArgs(cacheKey, 120, CacheItemPriority.Default, "Find", viewEngineCollection, parameters); return(useCache ? CBO.GetCachedObject <ViewEngineResult>(cacheArg, CallFind) : CallFind(cacheArg)); } catch (Exception) { return(viewEngineCollection.FindPartialView(controllerContext, partialViewName)); } }
// copied from HtmlHelper.FindPartialView because it's original is internal internal static IView FindPartialView(ViewContext viewContext, string partialViewName, ViewEngineCollection viewEngineCollection) { ViewEngineResult result = viewEngineCollection.FindPartialView(viewContext, partialViewName); if (result.View != null) { return(result.View); } StringBuilder builder = new StringBuilder(); foreach (string str in result.SearchedLocations) { builder.AppendLine(); builder.Append(str); } throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "The partial view '{0}' was not found or no view engine supports the searched locations. The following locations were searched:{1}", new object[] { partialViewName, builder })); }
public void FindPartialViewFailureWithOneEngine() { // Arrange ControllerContext context = new Mock <ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock <IViewEngine> engine = new Mock <IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(new[] { "location1", "location2" }); engine.Expect(e => e.FindPartialView(context, "partial", It.IsAny <bool>())).Returns(engineResult); collection.Add(engine.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.IsNull(result.View); Assert.AreEqual(2, result.SearchedLocations.Count()); Assert.IsTrue(result.SearchedLocations.Contains("location1")); Assert.IsTrue(result.SearchedLocations.Contains("location2")); }
protected override ViewEngineResult FindView(ControllerContext context) { ViewEngineResult result = ViewEngineCollection.FindPartialView(context, ViewName); if (result.View != null) { return(result); } // we need to generate an exception containing all the locations we searched StringBuilder locationsText = new StringBuilder(); foreach (string location in result.SearchedLocations) { locationsText.AppendLine(); locationsText.Append(location); } throw new InvalidOperationException(String.Format(CultureInfo.CurrentUICulture, "The partial view '{0}' could not be found. The following locations were searched:{1}", ViewName, locationsText)); }
private void RenderPartialInternal(string partialViewName, ViewDataDictionary viewData, object model, TextWriter writer, ViewEngineCollection viewEngineCollection) { if (String.IsNullOrEmpty(partialViewName)) { throw new ArgumentException("partialView Is Empty!", "partialViewName"); } partialViewName = string.Format("~/Views/Templates/{0}.cshtml", partialViewName); ViewDataDictionary newViewData = null; if (model == null) { if (viewData == null) { newViewData = new ViewDataDictionary(ViewData); } else { newViewData = new ViewDataDictionary(viewData); } } else { if (viewData == null) { newViewData = new ViewDataDictionary(model); } else { newViewData = new ViewDataDictionary(viewData) { Model = model }; } } IView view = viewEngineCollection.FindPartialView(this.ControllerContext, partialViewName).View; ViewContext newViewContext = new ViewContext(this.ControllerContext, view, newViewData, this.TempData, writer); IView newView = FindPartialView(newViewContext, partialViewName, viewEngineCollection); newView.Render(newViewContext, writer); }
/// <summary> /// Identical copy from MVC4 source code: HtmlHelper.FindPartialView. /// </summary> /// <param name="helper"></param> /// <param name="viewContext"></param> /// <param name="partialViewName"></param> /// <param name="viewEngineCollection"></param> /// <returns></returns> private static IView FindPartialView(HtmlHelper helper, ViewContext viewContext, string partialViewName, ViewEngineCollection viewEngineCollection) { ViewEngineResult result = viewEngineCollection.FindPartialView(viewContext, partialViewName); if (result.View != null) { return(result.View); } StringBuilder locationsText = new StringBuilder(); foreach (string location in result.SearchedLocations) { locationsText.AppendLine(); locationsText.Append(location); } throw new InvalidOperationException(String.Format( CultureInfo.CurrentCulture, (string)g_mvcResources.GetProperty("Common_PartialViewNotFound", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null, null), partialViewName, locationsText)); }
public void FindPartialViewDelegatesToResolver() { // Arrange Mock <IView> view = new Mock <IView>(); ControllerContext context = new ControllerContext(); Mock <IViewEngine> locatedEngine = new Mock <IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(view.Object, locatedEngine.Object); locatedEngine.Setup(e => e.FindPartialView(context, "ViewName", true)) .Returns(engineResult); Mock <IViewEngine> secondEngine = new Mock <IViewEngine>(); Resolver <IEnumerable <IViewEngine> > resolver = new Resolver <IEnumerable <IViewEngine> > { Current = new IViewEngine[] { locatedEngine.Object, secondEngine.Object } }; ViewEngineCollection engines = new ViewEngineCollection(resolver); // Act ViewEngineResult result = engines.FindPartialView(context, "ViewName"); // Assert Assert.Same(engineResult, result); secondEngine.Verify(e => e.FindPartialView(context, "ViewName", It.IsAny <bool>()), Times.Never()); }
public void FindPartialViewAggregatesAllSearchedLocationsIfAllEnginesFail() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection viewEngineCollection = new ViewEngineCollection(); Mock<IViewEngine> engine1 = new Mock<IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult(new[] { "location1", "location2" }); engine1.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine1Result); Mock<IViewEngine> engine2 = new Mock<IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult(new[] { "location3", "location4" }); engine2.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine2Result); viewEngineCollection.Add(engine1.Object); viewEngineCollection.Add(engine2.Object); // Act ViewEngineResult result = viewEngineCollection.FindPartialView(context, "partial"); // Assert Assert.IsNull(result.View); Assert.AreEqual(4, result.SearchedLocations.Count()); Assert.IsTrue(result.SearchedLocations.Contains("location1")); Assert.IsTrue(result.SearchedLocations.Contains("location2")); Assert.IsTrue(result.SearchedLocations.Contains("location3")); Assert.IsTrue(result.SearchedLocations.Contains("location4")); }
protected string PartialViewAsString(string partialviewName, object model) { if (string.IsNullOrEmpty(partialviewName)) { partialviewName = ControllerContext.RouteData.GetRequiredString("action"); } var viewData = ViewData; ViewData = new ViewDataDictionary(viewData) { Model = model }; using (var writer = new StringWriter()) { var viewResult = ViewEngineCollection.FindPartialView(ControllerContext, partialviewName); var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, writer); viewResult.View.Render(viewContext, writer); ViewData = viewData; return(writer.ToString()); } }
public void FindPartialViewLooksAtLocatorIfCacheEmpty() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; Mock<IViewEngine> engine = new Mock<IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(new Mock<IView>().Object, engine.Object); engine.Setup(e => e.FindPartialView(context, "partial", true)).Returns(new ViewEngineResult(new[] { "path" })); engine.Setup(e => e.FindPartialView(context, "partial", false)).Returns(engineResult); ViewEngineCollection collection = new ViewEngineCollection() { engine.Object, }; // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Same(engineResult, result); engine.Verify(e => e.FindPartialView(context, "partial", true), Times.Once()); engine.Verify(e => e.FindPartialView(context, "partial", false), Times.Once()); }
public void FindPartialViewReturnsValueFromFirstSuccessfulEngine() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock<IViewEngine> engine1 = new Mock<IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult(new Mock<IView>().Object, engine1.Object); engine1.Expect(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine1Result); Mock<IViewEngine> engine2 = new Mock<IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult(new Mock<IView>().Object, engine2.Object); engine2.Expect(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine2Result); collection.Add(engine1.Object); collection.Add(engine2.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.AreSame(engine1Result, result); }
public void FindPartialViewThrowsIfPartialViewNameIsEmpty() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); // Act & Assert ExceptionHelper.ExpectArgumentExceptionNullOrEmpty( () => collection.FindPartialView(context, ""), "partialViewName"); }
public void FindPartialViewDelegatesToResolver() { // Arrange Mock<IView> view = new Mock<IView>(); ControllerContext context = new ControllerContext(); Mock<IViewEngine> locatedEngine = new Mock<IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(view.Object, locatedEngine.Object); locatedEngine.Setup(e => e.FindPartialView(context, "ViewName", true)) .Returns(engineResult); Mock<IViewEngine> secondEngine = new Mock<IViewEngine>(); Resolver<IEnumerable<IViewEngine>> resolver = new Resolver<IEnumerable<IViewEngine>> { Current = new IViewEngine[] { locatedEngine.Object, secondEngine.Object } }; ViewEngineCollection engines = new ViewEngineCollection(resolver); // Act ViewEngineResult result = engines.FindPartialView(context, "ViewName"); // Assert Assert.Same(engineResult, result); secondEngine.Verify(e => e.FindPartialView(context, "ViewName", It.IsAny<bool>()), Times.Never()); }
/// <summary> /// Searches for evaluatedValueString partial view in the given <see cref="ViewEngineCollection"/>. /// </summary> /// <param name="viewContext">The view context.</param> /// <param name="partialViewName">The partial view name.</param> /// <param name="viewEngineCollection">The view engine collection.</param> /// <returns> /// The partial view. /// </returns> public virtual IView FindPartialView(ViewContext viewContext, string partialViewName, ViewEngineCollection viewEngineCollection) { if (string.IsNullOrEmpty(partialViewName)) throw new ArgumentNullException("partialViewName"); ViewEngineResult viewEngineResult = viewEngineCollection.FindPartialView(viewContext, partialViewName); if (viewEngineResult.View != null) { return viewEngineResult.View; } StringBuilder stringBuilder = new StringBuilder(); foreach (string current in viewEngineResult.SearchedLocations) { stringBuilder.AppendLine(); stringBuilder.Append(current); } throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.Common_PartialViewNotFound, partialViewName, stringBuilder)); }
public void FindPartialViewFailureWithOneEngine() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock<IViewEngine> engine = new Mock<IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(new[] { "location1", "location2" }); engine.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engineResult); collection.Add(engine.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Null(result.View); Assert.Equal(2, result.SearchedLocations.Count()); Assert.True(result.SearchedLocations.Contains("location1")); Assert.True(result.SearchedLocations.Contains("location2")); }
public void FindPartialViewIgnoresSearchLocationsFromCache() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; Mock<IViewEngine> engine = new Mock<IViewEngine>(); engine.Setup(e => e.FindPartialView(context, "partial", true)).Returns(new ViewEngineResult(new[] { "cachePath" })); engine.Setup(e => e.FindPartialView(context, "partial", false)).Returns(new ViewEngineResult(new[] { "locatorPath" })); ViewEngineCollection collection = new ViewEngineCollection() { engine.Object, }; // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert string searchedLocation = Assert.Single(result.SearchedLocations); Assert.Equal("locatorPath", searchedLocation); engine.Verify(e => e.FindPartialView(context, "partial", true), Times.Once()); engine.Verify(e => e.FindPartialView(context, "partial", false), Times.Once()); }
internal static IView FindPartialView(ViewContext viewContext, string partialViewName, ViewEngineCollection viewEngineCollection) { ViewEngineResult result = viewEngineCollection.FindPartialView(viewContext, partialViewName); if (result.View != null) { return result.View; } StringBuilder locationsText = new StringBuilder(); foreach (string location in result.SearchedLocations) { locationsText.AppendLine(); locationsText.Append(location); } throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, MvcResources.Common_PartialViewNotFound, partialViewName, locationsText)); }
public void FindPartialViewThrowsIfControllerContextIsNull() { // Arrange ViewEngineCollection collection = new ViewEngineCollection(); // Act & Assert Assert.ThrowsArgumentNull( () => collection.FindPartialView(null, "partial"), "controllerContext"); }
public void FindPartialViewDelegatesToResolver() { // Arrange Mock<IView> view = new Mock<IView>(); ControllerContext context = new ControllerContext(); Mock<IViewEngine> locatedEngine = new Mock<IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(view.Object, locatedEngine.Object); locatedEngine.Setup(e => e.FindPartialView(context, "ViewName", true)) .Returns(engineResult); Mock<IViewEngine> secondEngine = new Mock<IViewEngine>(); var resolver = new Mock<IDependencyResolver>(); resolver.Setup(r => r.GetServices(typeof(IViewEngine))).Returns(new IViewEngine[] { locatedEngine.Object, secondEngine.Object }); ViewEngineCollection engines = new ViewEngineCollection(new IViewEngine[0], resolver.Object); // Act ViewEngineResult result = engines.FindPartialView(context, "ViewName"); // Assert Assert.Same(engineResult, result); secondEngine.Verify(e => e.FindPartialView(context, "ViewName", It.IsAny<bool>()), Times.Never()); }
public void FindPartialViewThrowsIfPartialViewNameIsNull() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); // Act & Assert Assert.ThrowsArgumentNullOrEmpty( () => collection.FindPartialView(context, null), "partialViewName"); }
public void FindPartialViewSuccessWithOneEngine() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock<IViewEngine> engine = new Mock<IViewEngine>(); ViewEngineResult engineResult = new ViewEngineResult(new Mock<IView>().Object, engine.Object); engine.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engineResult); collection.Add(engine.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Same(engineResult, result); }
public void FindPartialViewReturnsNoViewAndEmptySearchedLocationsIfCollectionEmpty() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Null(result.View); Assert.Empty(result.SearchedLocations); }
public void FindPartialViewRemovesDuplicateSearchedLocationsFromMultipleEngines() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; Mock<IViewEngine> engine1 = new Mock<IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult(new[] { "repeatLocation", "location1" }); engine1.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine1Result); Mock<IViewEngine> engine2 = new Mock<IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult(new[] { "location2", "repeatLocation" }); engine2.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine2Result); ViewEngineCollection viewEngineCollection = new ViewEngineCollection() { engine1.Object, engine2.Object, }; // Act ViewEngineResult result = viewEngineCollection.FindPartialView(context, "partial"); // Assert var expectedLocations = new[] { "repeatLocation", "location1", "location2" }; Assert.Null(result.View); Assert.Equal(expectedLocations, result.SearchedLocations.ToArray()); }
public void FindPartialViewIteratesThroughCollectionUntilFindsSuccessfulEngine() { // Arrange ControllerContext context = new Mock<ControllerContext>().Object; ViewEngineCollection collection = new ViewEngineCollection(); Mock<IViewEngine> engine1 = new Mock<IViewEngine>(); ViewEngineResult engine1Result = new ViewEngineResult(new[] { "location1", "location2" }); engine1.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine1Result); Mock<IViewEngine> engine2 = new Mock<IViewEngine>(); ViewEngineResult engine2Result = new ViewEngineResult(new Mock<IView>().Object, engine2.Object); engine2.Setup(e => e.FindPartialView(context, "partial", It.IsAny<bool>())).Returns(engine2Result); collection.Add(engine1.Object); collection.Add(engine2.Object); // Act ViewEngineResult result = collection.FindPartialView(context, "partial"); // Assert Assert.Same(engine2Result, result); }