Пример #1
0
        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"));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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()));
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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());
        }
Пример #7
0
        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");
        }
Пример #11
0
        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");
        }
Пример #13
0
        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);
        }
Пример #18
0
 // 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));
        }
Пример #22
0
        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));
            }
        }
Пример #24
0
    // 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"));
        }
Пример #26
0
        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));
        }
Пример #27
0
        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);
        }
Пример #28
0
        /// <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"));
        }
Пример #31
0
        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());
        }
Пример #33
0
        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);
        }
Пример #34
0
        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());
        }
Пример #39
0
        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);
        }