public void WithDefaultViewName_GivenExpectedValue_ShouldPass()
        {
            ActionResult result = new PartialViewResult
            {
                ViewName = String.Empty
            };

            result.Should().BePartialViewResult().WithDefaultViewName();
        }
예제 #2
0
 public ActionResult View4()
 {
     PartialViewResult pr = new PartialViewResult();
     pr.SingleControl = true;
     pr.WrapByScriptTag = false;
     return pr;
 }
        public void FindView_UsesViewEngine_FromPartialViewResult()
        {
            // Arrange
            var context = GetActionContext();
            var executor = GetViewExecutor();

            var viewName = "my-view";
            var viewEngine = new Mock<ICompositeViewEngine>();
            viewEngine
                .Setup(e => e.FindPartialView(context, viewName))
                .Returns(ViewEngineResult.Found(viewName, Mock.Of<IView>()))
                .Verifiable();

            var viewResult = new PartialViewResult
            {
                ViewEngine = viewEngine.Object,
                ViewName = viewName,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            var viewEngineResult = executor.FindView(context, viewResult);

            // Assert
            Assert.Equal(viewName, viewEngineResult.ViewName);
            viewEngine.Verify();
        }
예제 #4
0
        public void FindView_UsesViewEngine_FromPartialViewResult()
        {
            // Arrange
            var context = GetActionContext();
            var executor = GetViewExecutor();

            var viewName = "my-view";
            var viewEngine = new Mock<ICompositeViewEngine>(MockBehavior.Strict);
            viewEngine
                .Setup(e => e.GetView(/*executingFilePath*/ null, viewName, /*isMainPage*/ false))
                .Returns(ViewEngineResult.NotFound(viewName, Enumerable.Empty<string>()))
                .Verifiable();
            viewEngine
                .Setup(e => e.FindView(context, viewName, /*isMainPage*/ false))
                .Returns(ViewEngineResult.Found(viewName, Mock.Of<IView>()))
                .Verifiable();

            var viewResult = new PartialViewResult
            {
                ViewEngine = viewEngine.Object,
                ViewName = viewName,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            var viewEngineResult = executor.FindView(context, viewResult);

            // Assert
            Assert.Equal(viewName, viewEngineResult.ViewName);
            viewEngine.Verify();
        }
예제 #5
0
        /// <summary>
        /// Attempts to find the <see cref="IView"/> associated with <paramref name="viewResult"/>.
        /// </summary>
        /// <param name="actionContext">The <see cref="ActionContext"/> associated with the current request.</param>
        /// <param name="viewResult">The <see cref="PartialViewResult"/>.</param>
        /// <returns>A <see cref="ViewEngineResult"/>.</returns>
        public virtual ViewEngineResult FindView(ActionContext actionContext, PartialViewResult viewResult)
        {
            if (actionContext == null)
            {
                throw new ArgumentNullException(nameof(actionContext));
            }

            if (viewResult == null)
            {
                throw new ArgumentNullException(nameof(viewResult));
            }

            var viewEngine = viewResult.ViewEngine ?? ViewEngine;
            var viewName = viewResult.ViewName ?? actionContext.ActionDescriptor.Name;

            var result = viewEngine.FindPartialView(actionContext, viewName);
            if (result.Success)
            {
                DiagnosticSource.ViewFound(actionContext, true, viewResult, viewName, result.View);

                Logger.LogVerbose("The partial view '{PartialViewName}' was found.", viewName);
            }
            else
            {
                DiagnosticSource.ViewNotFound(actionContext, true, viewResult, viewName, result.SearchedLocations);

                Logger.LogError(
                    "The partial view '{PartialViewName}' was not found. Searched locations: {SearchedViewLocations}",
                    viewName,
                    result.SearchedLocations);
            }

            return result;
        }
예제 #6
0
        public async Task ExecuteResultAsync_Throws_IfViewCouldNotBeFound_MessageUsesGetViewLocations()
        {
            // Arrange
            var expected = string.Join(
                Environment.NewLine,
                "The view 'MyView' was not found. The following locations were searched:",
                "Location1",
                "Location2");

            var actionContext = GetActionContext();

            var viewEngine = new Mock<IViewEngine>(MockBehavior.Strict);
            viewEngine
                .Setup(v => v.GetView(/*executingFilePath*/ null, "MyView", /*isMainPage*/ false))
                .Returns(ViewEngineResult.NotFound("MyView", new[] { "Location1", "Location2" }))
                .Verifiable();
            viewEngine
                .Setup(v => v.FindView(It.IsAny<ActionContext>(), "MyView", /*isMainPage*/ false))
                .Returns(ViewEngineResult.NotFound("MyView", Enumerable.Empty<string>()))
                .Verifiable();

            var viewResult = new PartialViewResult
            {
                ViewEngine = viewEngine.Object,
                ViewName = "MyView",
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act and Assert
            var ex = await Assert.ThrowsAsync<InvalidOperationException>(
                () => viewResult.ExecuteResultAsync(actionContext));
            Assert.Equal(expected, ex.Message);
            viewEngine.Verify();
        }
예제 #7
0
 public ActionResult View2(string containerId)
 {
     PartialViewResult pr = new PartialViewResult(containerId);
     pr.RenderMode = RenderMode.AddTo;
     pr.SingleControl = true;
     pr.WrapByScriptTag = false;
     return pr;
 }
예제 #8
0
 public ActionResult View3(string containerId)
 {
     PartialViewResult pr = new PartialViewResult(containerId);
     pr.RenderMode = RenderMode.AddTo;
     pr.SingleControl = true;
     pr.WrapByScriptTag = false;
     pr.ViewData["title"] = DateTime.Now.ToLongTimeString();
     pr.ViewData["html"] = DateTime.Now.ToLongTimeString();
     return pr;
 }
        public void ModelAs_GivenExpectedValue_ShouldPass()
        {
#if NETCOREAPP1_0
            var result = new TestController().PartialViewSimpleModel();
#else
            ActionResult result = new PartialViewResult
            {
                ViewData = new ViewDataDictionary("hello")
            };
#endif
            result.Should().BePartialViewResult().ModelAs<string>().Should().Be("hello");
        }
        public void ModelAs_GivenUnexpectedValue_ShouldFail()
        {
#if NETCOREAPP1_0
            var result = new TestController().PartialViewSimpleModel();
#else
            ActionResult result = new PartialViewResult
            {
                ViewData = new ViewDataDictionary("hello")
            };
#endif
            Action a = () => result.Should().BePartialViewResult().ModelAs<string>().Should().Be("xyx");
            a.ShouldThrow<Exception>();
        }
예제 #11
0
        public void FindView_UsesActionDescriptorName_IfViewNameIsNull()
        {
            // Arrange
            var viewName = "some-view-name";
            var context = GetActionContext(viewName);
            var executor = GetViewExecutor();

            var viewResult = new PartialViewResult
            {
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            var viewEngineResult = executor.FindView(context, viewResult);

            // Assert
            Assert.Equal(viewName, viewEngineResult.ViewName);
        }
        public override void ExecuteResult(ControllerContext context)
        {
            if(this.component != null)
            {
                context.HttpContext.Response.Write(ComponentLoader.ToConfig(this.component));
            }
            else if (this.components != null)
            {
                context.HttpContext.Response.Write(ComponentLoader.ToConfig(this.components));
            }
            else
            {
                PartialViewResult result = new PartialViewResult();
                result.RenderMode = RenderMode.AddTo;
                result.Config = true;

                if (this.viewName.IsNotEmpty())
                {
                    result.ViewName = this.viewName;
                }

                if (this.model != null)
                {
                    result.Model = this.model;
                }

                if (this.viewData != null)
                {
                    result.ViewData = this.viewData;
                }

                if (this.tempData != null)
                {
                    result.TempData = this.tempData;
                }

                result.ExecuteResult(context);

                context.HttpContext.Response.Write(result.Output);
            }
        }
 public static void ViewFound(
     this DiagnosticSource diagnosticSource,
     ActionContext actionContext,
     bool isPartial,
     PartialViewResult viewResult,
     string viewName,
     IView view)
 {
     if (diagnosticSource.IsEnabled("Microsoft.AspNet.Mvc.ViewFound"))
     {
         diagnosticSource.Write(
             "Microsoft.AspNet.Mvc.ViewFound",
             new
             {
                 actionContext = actionContext,
                 isPartial = isPartial,
                 result = viewResult,
                 viewName = viewName,
                 view = view,
             });
     }
 }
 public static void ViewNotFound(
     this DiagnosticSource diagnosticSource,
     ActionContext actionContext,
     bool isPartial,
     PartialViewResult viewResult,
     string viewName,
     IEnumerable<string> searchedLocations)
 {
     if (diagnosticSource.IsEnabled("Microsoft.AspNet.Mvc.ViewNotFound"))
     {
         diagnosticSource.Write(
             "Microsoft.AspNet.Mvc.ViewNotFound",
             new
             {
                 actionContext = actionContext,
                 isPartial = isPartial,
                 result = viewResult,
                 viewName = viewName,
                 searchedLocations = searchedLocations,
             });
     }
 }
예제 #15
0
        public void EditTest()
        {
            dept v = new dept();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Index = 13;
                context.Set <dept>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());

            Assert.IsInstanceOfType(rv.Model, typeof(deptVM));

            deptVM vm = rv.Model as deptVM;

            v    = new dept();
            v.ID = vm.Entity.ID;

            v.Index   = 56;
            vm.Entity = v;
            vm.FC     = new Dictionary <string, object>();

            vm.FC.Add("Entity.Index", "");
            _controller.Edit(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <dept>().FirstOrDefault();

                Assert.AreEqual(data.Index, 56);
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
예제 #16
0
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(ship_popVM));

            ship_popVM vm = rv.Model as ship_popVM;
            ship_pop   v  = new ship_pop();

            v.UserID   = AddUser();
            v.PopID    = AddPop();
            v.OrderQty = 38;
            vm.Entity  = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <ship_pop>().FirstOrDefault();

                Assert.AreEqual(data.OrderQty, 38);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
예제 #17
0
        public void Commodity_Create_Sub_Commodity_Get_Test()
        {
            IUnitOfWork         repository = this.MockCommodityRepository;
            CommodityController target     = new CommodityController(repository);
            int            type            = 0;
            Nullable <int> Parent          = 1; //who is the parent commodity
            ActionResult   expected        = null;
            ActionResult   actual;

            actual = target.Create(type, Parent);

            PartialViewResult result = actual as PartialViewResult;

            Assert.IsNotNull(result);

            Assert.AreEqual(result.Model.GetType(), typeof(Commodity));

            Assert.IsNotNull(result.ViewBag.CommodityTypeID);
            //major diff between parent and child
            Assert.IsNotNull(result.ViewBag.ParentID);
            Assert.AreEqual(result.ViewBag.isParent, true);
            Assert.IsNotNull(result.ViewBag.CommodityType);
            Assert.IsNotNull(result.ViewBag.ParentCommodity);
        }
예제 #18
0
        public IActionResult MessageLayout(string viewName, string title, string message, string backUrl, string note = "")
        {
            TempDataDictionary tempData = new TempDataDictionary(HttpContext, _tempDataProvider);

            tempData.Add("Title", title);
            tempData.Add("Message", message);
            tempData.Add("Note", note);
            tempData.Add("BaseUrl", BaseUrl);
            tempData.Add("BackUrl", backUrl);
            if (string.IsNullOrEmpty(viewName))
            {
                viewName = ControllerContext.ActionDescriptor.DisplayName;
            }
            PartialViewResult partialView = new PartialViewResult();

            partialView.ViewName   = viewName;
            partialView.TempData   = tempData;
            partialView.ViewData   = ViewData;
            partialView.ViewEngine = _serviceProvider.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
            ActionContext actionContext = new ActionContext();

            partialView.ExecuteResult(actionContext);
            return(partialView);
        }
        public void UpdateTest()
        {
            student1.Grad = "Paracin";
            student2.Grad = "Cacak";
            student3.Grad = "Novi Sad";
            student4.Grad = "Subotica";

            PartialViewResult result1 = (PartialViewResult)cont.GridViewPartialUpdate(student1);
            PartialViewResult result2 = (PartialViewResult)cont.GridViewPartialUpdate(student2);
            PartialViewResult result3 = (PartialViewResult)cont.GridViewPartialUpdate(student3);
            PartialViewResult result4 = (PartialViewResult)cont.GridViewPartialUpdate(student4);

            Assert.AreEqual(result1.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result1.Model);

            Assert.AreEqual(result2.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result2.Model);

            Assert.AreEqual(result3.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result3.Model);

            Assert.AreEqual(result4.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result4.Model);
        }
예제 #20
0
        public void EditTest()
        {
            NormalEntEvaluationBase v = new NormalEntEvaluationBase();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Status = 31;
                context.Set <NormalEntEvaluationBase>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());

            Assert.IsInstanceOfType(rv.Model, typeof(NormalEntEvaluationBaseVM));

            NormalEntEvaluationBaseVM vm = rv.Model as NormalEntEvaluationBaseVM;

            v    = new NormalEntEvaluationBase();
            v.ID = vm.Entity.ID;

            v.Status  = 9;
            vm.Entity = v;
            vm.FC     = new Dictionary <string, object>();

            vm.FC.Add("Entity.Status", "");
            _controller.Edit(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <NormalEntEvaluationBase>().FirstOrDefault();

                Assert.AreEqual(data.Status, 9);
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
예제 #21
0
        public async Task SearchBookmarksByKeywords()
        {
            HttpContext.Current = new HttpContext(
                new HttpRequest("", "http://tempuri.org", ""),
                new HttpResponse(new StringWriter())
                );


            UnityConfig.RegisterComponents();

            System.Web.HttpContext.Current.Items["BusinessLocator"] = new BusinessLocator(UnityConfig.UnityContainer);

            BookmarkController ctrl = new BookmarkController();
            FormCollection     fc   = new FormCollection();

            fc["hf_keywords_selected"] = "journal|gauche";
            PartialViewResult vr = await ctrl.SearchBookmarksByKeywords(fc) as PartialViewResult;

            //on verifie que le nombre de bookmarks retourné est 1
            //Assert.IsTrue( (IEnumerable<ViewModelBookmark>)vr.Model).Count() == 1);

            //on verifie bien qu'il s'agit du journal Liberation
            Assert.IsTrue(((List <ViewModelBookmark>)vr.Model)[0].Url.Contains("liberation"));
        }
예제 #22
0
        public void EditTest()
        {
            Hospital v = new Hospital();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Name       = "lm862zt";
                v.LocationId = AddLocation();
                context.Set <Hospital>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());

            Assert.IsInstanceOfType(rv.Model, typeof(HospitalVM));

            HospitalVM vm = rv.Model as HospitalVM;

            v    = new Hospital();
            v.ID = vm.Entity.ID;

            v.Name    = "vS52b3xZp";
            vm.Entity = v;
            vm.FC     = new Dictionary <string, object>();

            vm.FC.Add("Entity.Name", "");
            vm.FC.Add("Entity.LocationId", "");
            _controller.Edit(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <Hospital>().FirstOrDefault();

                Assert.AreEqual(data.Name, "vS52b3xZp");
            }
        }
        public ActionResult OnGetOutletTable()
        {
            var outletTableViewModel = new OutletTableViewModel();

            outletTableViewModel.Outlets            = _pdu.GetOutlets(true, false);
            outletTableViewModel.WebRootPath        = _environment.WebRootPath;
            outletTableViewModel.OutletConfirmation = _configuration.GetSection("OutletConfirmation").Get <string[]>();
            outletTableViewModel.Phases             = _pdu.GetPhases();

            var viewData = new ViewDataDictionary(new Microsoft.AspNetCore.Mvc.ModelBinding.EmptyModelMetadataProvider(), new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary())
            {
                { "OutletTableViewModel", outletTableViewModel }
            };

            viewData.Model = outletTableViewModel;

            PartialViewResult result = new PartialViewResult()
            {
                ViewName = "_OutletTable",
                ViewData = viewData,
            };

            return(result);
        }
예제 #24
0
        public static string ToHtml(this PartialViewResult result, HttpContext httpContext)
        {
            var feature           = httpContext.Features.Get <IRoutingFeature>();
            var routeData         = feature.RouteData;
            var viewName          = result.ViewName ?? routeData.Values["action"] as string;
            var actionContext     = new ActionContext(httpContext, routeData, new ControllerActionDescriptor());
            var options           = httpContext.RequestServices.GetRequiredService <IOptions <MvcViewOptions> >();
            var htmlHelperOptions = options.Value.HtmlHelperOptions;
            var viewEngineResult  = result.ViewEngine?.FindView(actionContext, viewName, true) ?? options.Value.ViewEngines.Select(x => x.FindView(actionContext, viewName, true)).FirstOrDefault(x => x != null);
            var view    = viewEngineResult.View;
            var builder = new StringBuilder();

            using (var output = new StringWriter(builder))
            {
                var viewContext = new ViewContext(actionContext, view, result.ViewData, result.TempData, output, htmlHelperOptions);

                view
                .RenderAsync(viewContext)
                .GetAwaiter()
                .GetResult();
            }

            return(builder.ToString());
        }
예제 #25
0
        public PartialViewResult OnGetEntities(string dvt, Guid engineId)
        {
            EntityView typedEntityView = null;


            if (Enum.TryParse(typeof(YEntityType), dvt, out var t))
            {
                typedEntityView = EntityViewFactory.GetTypedEntityView((YEntityType)t);
            }

            if (typedEntityView == null || typedEntityView.EntityType == YEntityType.None)
            {
                return(null);
            }

            typedEntityView.EngineId = engineId;
            typedEntityView.IsNew    = true;

            PartialViewResult partial = Partial(typedEntityView.PartialView, typedEntityView);

            partial.ViewData.TemplateInfo.HtmlFieldPrefix = nameof(EntityView);

            return(partial);
        }
예제 #26
0
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(SchoolVM));

            SchoolVM vm = rv.Model as SchoolVM;
            School   v  = new School();

            v.SchoolCode = "p6k";
            v.SchoolName = "ko5Ms";
            vm.Entity    = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <School>().FirstOrDefault();

                Assert.AreEqual(data.SchoolCode, "p6k");
                Assert.AreEqual(data.SchoolName, "ko5Ms");
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
        public void AddOrder_ReturnsCorrectPartialViewResult()
        {
            // Arrange
            Mock <IClientOrderProvider>  clientOrderProviderMock  = new Mock <IClientOrderProvider>();
            Mock <IClientOrderHandler>   clientOrderHandlerMock   = new Mock <IClientOrderHandler>();
            Mock <IClientOrderValidator> clientOrderValidatorMock = new Mock <IClientOrderValidator>();
            Mock <IUserProvider>         userProviderMock         = new Mock <IUserProvider>();
            Mock <IDeliveryProvider>     deliveryProviderMock     = new Mock <IDeliveryProvider>();
            Mock <IProductProvider>      productProviderMock      = new Mock <IProductProvider>();

            ClientOrderController controller = new ClientOrderController(clientOrderProviderMock.Object,
                                                                         clientOrderHandlerMock.Object,
                                                                         clientOrderValidatorMock.Object,
                                                                         userProviderMock.Object,
                                                                         deliveryProviderMock.Object,
                                                                         productProviderMock.Object
                                                                         );
            // Act
            PartialViewResult result = controller.AddOrder(null) as PartialViewResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("_AddOrderPartial", result.ViewName);
        }
예제 #28
0
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(DataCheckVM));

            DataCheckVM vm = rv.Model as DataCheckVM;
            DataCheck   v  = new DataCheck();

            v.LeftTableID  = AddLeftTable();
            v.RightTableID = AddRightTable();
            v.ID           = 21;
            vm.Entity      = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <DataCheck>().FirstOrDefault();

                Assert.AreEqual(data.ID, 21);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
예제 #29
0
        public void EditTest()
        {
            Category v = new Category();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Name = "ttbc6G";
                context.Set <Category>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());

            Assert.IsInstanceOfType(rv.Model, typeof(CategoryVM));

            CategoryVM vm = rv.Model as CategoryVM;

            v    = new Category();
            v.ID = vm.Entity.ID;

            v.Name    = "sEXfPP9s";
            vm.Entity = v;
            vm.FC     = new Dictionary <string, object>();

            vm.FC.Add("Entity.Name", "");
            _controller.Edit(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <Category>().FirstOrDefault();

                Assert.AreEqual(data.Name, "sEXfPP9s");
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
예제 #30
0
        public static string RenderToString(this PartialViewResult partialView)
        {
            var httpContext = HttpContext.Current;

            if (httpContext == null)
            {
                throw new NotSupportedException("An HTTP context is required to render the partial view to a string");
            }

            var controllerName = httpContext.Request.RequestContext.RouteData.Values["controller"].ToString();

            var controller = (ControllerBase)ControllerBuilder.Current.GetControllerFactory().CreateController(httpContext.Request.RequestContext, controllerName);

            var controllerContext = new ControllerContext(httpContext.Request.RequestContext, controller);

            var view = ViewEngines.Engines.FindPartialView(controllerContext, partialView.ViewName).View;

            var sb = new StringBuilder();

            using (var sw = new StringWriter(sb))
            {
                using (var tw = new HtmlTextWriter(sw))
                {
                    try
                    {
                        view.Render(new ViewContext(controllerContext, view, partialView.ViewData, partialView.TempData, tw), tw);
                    }
                    catch (Exception x)
                    {
                        sb.Append("View Extension Error " + x.Message);
                    }
                }
            }

            return(sb.ToString());
        }
예제 #31
0
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(PaintMapEntityVM));

            PaintMapEntityVM vm = rv.Model as PaintMapEntityVM;
            PaintMapEntity   v  = new PaintMapEntity();

            v.Img     = "UoG";
            v.Sort    = 70;
            vm.Entity = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <PaintMapEntity>().FirstOrDefault();

                Assert.AreEqual(data.Img, "UoG");
                Assert.AreEqual(data.Sort, 70);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(PlayerInfoVM));

            PlayerInfoVM vm = rv.Model as PlayerInfoVM;
            PlayerInfo   v  = new PlayerInfo();

            v.Sex     = 58;
            v.Sect    = 21;
            vm.Entity = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <PlayerInfo>().FirstOrDefault();

                Assert.AreEqual(data.Sex, 58);
                Assert.AreEqual(data.Sect, 21);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
예제 #33
0
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(PushTasksEntityVM));

            PushTasksEntityVM vm = rv.Model as PushTasksEntityVM;
            PushTasksEntity   v  = new PushTasksEntity();

            v.TaskTitle = "GiICb";
            v.TaskBody  = "Y9etx";
            vm.Entity   = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <PushTasksEntity>().FirstOrDefault();

                Assert.AreEqual(data.TaskTitle, "GiICb");
                Assert.AreEqual(data.TaskBody, "Y9etx");
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
예제 #34
0
        public override ActionResult Execute(Content currentNode, IDictionary <string, string> macroParams, MacroDefinition macro, ControllerContext currentControllerContext, IRoutableRequestContext routableRequestContext)
        {
            //If this partial view is part of a package it will be prefixed with the package (area) name.
            //if so, then we need to ensure that the view is rendered in the context of the area so the view is found
            //properly.
            var macroParts = macro.SelectedItem.Split('-');
            var areaName   = macroParts.Length > 1 ? macroParts[0] : "";

            var model = new PartialViewMacroModel(currentNode, new BendyObject(macroParams));

            var partialViewResult = new PartialViewResult()
            {
                //if someone has put '-' in the view name, then we need to include those too, we just delimit the area name and view name by the 'first' '-'
                //ViewName = macroParts.Length > 1
                //        ? string.Join("", macroParts.Where((x, i) => i != 0))
                //        : string.Join("", macroParts),
                ViewName = GetFullViewPath(macro, routableRequestContext),
                ViewData = new ViewDataDictionary(model),
                TempData = new TempDataDictionary(),
            };

            var partialViewControllerContext = currentControllerContext;

            if (!areaName.IsNullOrWhiteSpace())
            {
                //need create a new controller context with the area info
                var areaRouteData = currentControllerContext.RouteData.Clone();
                areaRouteData.DataTokens["area"] = areaName;
                partialViewControllerContext     = new ControllerContext(currentControllerContext.HttpContext, areaRouteData, currentControllerContext.Controller);
            }

            //wire up the view object/data
            partialViewControllerContext.EnsureViewObjectDataOnResult(partialViewResult);

            return(partialViewResult);
        }
예제 #35
0
        public void GetLoggedInUsers_LoggedInUsersContainsOldDateTimeForUsersMinus1Second_UserName()
        {
            //Arrange
            mock.Setup(p => p.HttpContext.User.IsInRole("ADM")).Returns(true);
            DateTime timeBefore = DateTime.Now.ToLocalTimeAzure();

            HttpRuntime.Cache["LoggedInUsers"] = new Dictionary <string, DateTime>();
            ((HttpRuntime.Cache["LoggedInUsers"]) as Dictionary <string, DateTime>)["briv"] = timeBefore;
            ((HttpRuntime.Cache["LoggedInUsers"]) as Dictionary <string, DateTime>)["rkni"] = DateTime.Now.ToLocalTimeAzure().AddMinutes(-5).AddSeconds(-1);
            Thread.Sleep(1);

            //Act
            PartialViewResult result = controller.GetLoginUser();


            //Assert
            Assert.IsTrue(HttpRuntime.Cache["LoggedInUsers"] as Dictionary <string, DateTime> != null);
            Assert.IsTrue((HttpRuntime.Cache["LoggedInUsers"] as Dictionary <string, DateTime>).ContainsKey("briv"));
            Assert.IsFalse((HttpRuntime.Cache["LoggedInUsers"] as Dictionary <string, DateTime>).ContainsKey("rkni"));
            Assert.Greater((HttpRuntime.Cache["LoggedInUsers"] as Dictionary <string, DateTime>)["briv"], timeBefore);
            Assert.AreEqual(typeof(PartialViewResult), result.GetType());
            Assert.AreEqual(((PartialViewResult)result).ViewName, "_GetOnlineUsersShort");
            Assert.AreEqual(2, result.ViewEngineCollection.Count());
        }
예제 #36
0
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(VOS_UserGroupVM));

            VOS_UserGroupVM vm = rv.Model as VOS_UserGroupVM;
            VOS_UserGroup   v  = new VOS_UserGroup();

            v.GroupCode = "J04P";
            v.GroupName = "W3dHFX";
            vm.Entity   = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <VOS_UserGroup>().FirstOrDefault();

                Assert.AreEqual(data.GroupCode, "J04P");
                Assert.AreEqual(data.GroupName, "W3dHFX");
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
예제 #37
0
        public async Task CreateContactAccount_WhenCalledWithAccountingNumberForExistingAccounting_ReturnsPartialViewResultWhereModelIsContactAccountViewModelWithBalanceInfosContainingDataForCurrentYear()
        {
            Controller sut = CreateSut();

            PartialViewResult result = (PartialViewResult)await sut.CreateContactAccount(_fixture.Create <int>());

            ContactAccountViewModel contactAccountViewModel = (ContactAccountViewModel)result.Model;

            short currentYear  = (short)DateTime.Today.Year;
            short currentMonth = (short)DateTime.Today.Month;

            Assert.That(contactAccountViewModel.BalanceInfos.ContainsKey(currentYear), Is.True);

            BalanceInfoCollectionViewModel balanceInfoCollectionViewModel = contactAccountViewModel.BalanceInfos[currentYear];

            Assert.That(balanceInfoCollectionViewModel, Is.Not.Null);
            Assert.That(balanceInfoCollectionViewModel.Count, Is.EqualTo(12 - currentMonth + 1));
            for (short month = currentMonth; month <= 12; month++)
            {
                BalanceInfoViewModel balanceInfoViewModel = balanceInfoCollectionViewModel.Single(m => m.Year == currentYear && m.Month == month);
                Assert.That(balanceInfoViewModel.EditMode, Is.EqualTo(EditMode.Create));
                Assert.That(balanceInfoViewModel.Balance, Is.EqualTo(0M));
            }
        }
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();

            Assert.IsInstanceOfType(rv.Model, typeof(StudentVM));

            StudentVM vm = rv.Model as StudentVM;
            Student   v  = new Student();

            v.Name    = "Ig1N37FOm";
            v.Age     = 20;
            vm.Entity = v;
            _controller.Create(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <Student>().Find(v.ID);

                Assert.AreEqual(data.Name, "Ig1N37FOm");
                Assert.AreEqual(data.Age, 20);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
예제 #39
0
        public static T ModelFromActionResult <T>(this ActionResult actionResult)
        {
            // Taken from Stackoverflow
            object model;

            if (actionResult.GetType() == typeof(ViewResult))
            {
                ViewResult viewResult = (ViewResult)actionResult;
                model = viewResult.Model;
            }
            else if (actionResult.GetType() == typeof(PartialViewResult))
            {
                PartialViewResult partialViewResult = (PartialViewResult)actionResult;
                model = partialViewResult.Model;
            }
            else
            {
                throw new InvalidOperationException(string.Format("Actionresult of type {0} is not supported by ModelFromResult extractor.", actionResult.GetType()));
            }

            T typedModel = (T)model;

            return(typedModel);
        }
예제 #40
0
        public void OpeningHoursPartial()
        {
            //Arrange
            var openingHours = new OpeningHours()
            {
                WorksDays = new List <Days>()
                {
                    new Days()
                    {
                        Name = "Pon-Czw", WorkHours = "12.00 - 22.00"
                    },
                    new Days()
                    {
                        Name = "Pt-Sob", WorkHours = "12.00 - 22.00"
                    },
                    new Days()
                    {
                        Name = "Niedz", WorkHours = "12.00 - 22.00"
                    }
                }
            };
            var            homePresentationService = Substitute.For <IHomePresentationService>();
            var            xmlManager = Substitute.For <IXmlManager>();
            HomeController controller = new HomeController(homePresentationService, xmlManager);

            //Act
            xmlManager.GetXmlModel <OpeningHours>("OpeningHours").Returns(openingHours);
            PartialViewResult result   = controller.OpeningHoursPartial() as PartialViewResult;
            string            viewName = result.ViewName;
            OpeningHours      model    = result.Model as OpeningHours;

            //Assert
            Assert.NotNull(result);
            Assert.AreEqual("_OpeningHoursPartial", viewName);
            Assert.NotNull(model);
        }
        public void CommentList_ReturningView_ReturnDefaultViewWithNotNullModel()
        {
            int             expectedCommentId = 1;
            ICommentService commentService    = Mock.Of <ICommentService>(id => id.GetIndependentComments(It.IsAny <int>()) == new List <CommentViewModel>
            {
                new CommentViewModel
                {
                    Id           = expectedCommentId,
                    CreationDate = DateTime.Now.ToString("D")
                }
            });

            Controller.CommentService = commentService;
            Mock <IAuthProvider> authProvider = new Mock <IAuthProvider>();

            authProvider.Setup(id => id.GetCurrentUser()).Returns("currentuser");
            Controller.AuthProvider = authProvider.Object;

            PartialViewResult result      = Controller.CommentList(new CommentViewModel()) as PartialViewResult;
            var returnedCommentViewModels = (List <CommentViewModel>)result.Model;

            Assert.AreEqual(expectedCommentId, returnedCommentViewModels[0].Id);
            Assert.AreEqual("", result.ViewName);
        }
예제 #42
0
        /// <summary>
        /// Render View AND Return The HTML Content
        /// </summary>
        /// <param name="controller">controller</param>
        /// <param name="viewName">view name</param>
        /// <param name="model">model</param>
        /// <param name="masterName">master name</param>
        /// <param name="partialView">is partial view</param>
        /// <returns></returns>
        public static async Task <string> RenderViewContentAsync(this Controller controller, string viewName, object model, string masterName, bool partialView = false)
        {
            controller.ViewData.Model = model;
            using (var sw = new StringWriter())
            {
                var actionContext = new ActionContext(controller.HttpContext, controller.RouteData, new ActionDescriptor());
                if (partialView)
                {
                    PartialViewResult partialViewResult = new PartialViewResult()
                    {
                        ViewData = controller.ViewData,
                        TempData = controller.TempData,
                        ViewName = viewName
                    };
                    var partialViewExecutor = controller.HttpContext.RequestServices.GetRequiredService <PartialViewResultExecutor>();
                    var pView        = partialViewExecutor.FindView(actionContext, partialViewResult).View;
                    var pviewContext = new ViewContext(actionContext, pView, partialViewResult.ViewData, partialViewResult.TempData, sw, new HtmlHelperOptions());
                    await pView.RenderAsync(pviewContext).ConfigureAwait(false);

                    return(sw.GetStringBuilder().ToString());
                }

                ViewResult viewResult = new ViewResult()
                {
                    ViewData = controller.ViewData,
                    TempData = controller.TempData,
                    ViewName = viewName
                };
                var viewExecutor = controller.HttpContext.RequestServices.GetRequiredService <ViewResultExecutor>();
                var view         = viewExecutor.FindView(actionContext, viewResult).View;
                var viewContext  = new ViewContext(actionContext, view, viewResult.ViewData, viewResult.TempData, sw, new HtmlHelperOptions());
                await view.RenderAsync(viewContext).ConfigureAwait(false);

                return(sw.GetStringBuilder().ToString());
            }
        }
        public void UpdateIspitTest()
        {
            ispit1.Ocena = 9;
            ispit2.Ocena = 7;
            ispit3.Ocena = 6;
            ispit4.Ocena = 8;

            PartialViewResult result1 = (PartialViewResult)cont2.GridViewPartialUpdate(ispit1);
            PartialViewResult result2 = (PartialViewResult)cont2.GridViewPartialUpdate(ispit2);
            PartialViewResult result3 = (PartialViewResult)cont2.GridViewPartialUpdate(ispit3);
            PartialViewResult result4 = (PartialViewResult)cont2.GridViewPartialUpdate(ispit4);

            Assert.AreEqual(result1.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result1.Model);

            Assert.AreEqual(result2.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result2.Model);

            Assert.AreEqual(result3.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result3.Model);

            Assert.AreEqual(result4.ViewName, "_GridViewPartial");
            Assert.IsNotNull(result4.Model);
        }
예제 #44
0
        public void EditTest()
        {
            VOS_Organization v = new VOS_Organization();

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.OrganizationName = "poq8AbTBY";
                context.Set <VOS_Organization>().Add(v);
                context.SaveChanges();
            }

            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());

            Assert.IsInstanceOfType(rv.Model, typeof(VOS_OrganizationVM));

            VOS_OrganizationVM vm = rv.Model as VOS_OrganizationVM;

            v    = new VOS_Organization();
            v.ID = vm.Entity.ID;

            v.OrganizationName = "Lj7KA";
            vm.Entity          = v;
            vm.FC = new Dictionary <string, object>();

            vm.FC.Add("Entity.OrganizationName", "");
            _controller.Edit(vm);

            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set <VOS_Organization>().FirstOrDefault();

                Assert.AreEqual(data.OrganizationName, "Lj7KA");
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
        public async Task ExecuteAsync_UsesStatusCode_FromPartialViewResult()
        {
            // Arrange
            var context = GetActionContext();
            var executor = GetViewExecutor();

            var contentType = MediaTypeHeaderValue.Parse("application/x-my-content-type");

            var viewResult = new PartialViewResult
            {
                ViewName = "my-view",
                StatusCode = 404,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            await executor.ExecuteAsync(context, Mock.Of<IView>(), viewResult);

            // Assert
            Assert.Equal(404, context.HttpContext.Response.StatusCode);
        }
        public void FindView_WritesDiagnostic_ViewNotFound()
        {
            // Arrange
            var diagnosticSource = new DiagnosticListener("Test");
            var listener = new TestDiagnosticListener();
            diagnosticSource.SubscribeWithAdapter(listener);

            var context = GetActionContext();
            var executor = GetViewExecutor(diagnosticSource);

            var viewName = "myview";
            var viewEngine = new Mock<IViewEngine>(MockBehavior.Strict);
            viewEngine
                .Setup(e => e.FindPartialView(context, "myview"))
                .Returns(ViewEngineResult.NotFound("myview", new string[] { "location/myview" }));

            var viewResult = new PartialViewResult
            {
                ViewName = viewName,
                ViewEngine = viewEngine.Object,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            var viewEngineResult = executor.FindView(context, viewResult);

            // Assert
            Assert.False(viewEngineResult.Success);

            Assert.NotNull(listener.ViewNotFound);
            Assert.NotNull(listener.ViewNotFound.ActionContext);
            Assert.NotNull(listener.ViewNotFound.Result);
            Assert.Equal(new string[] { "location/myview" }, listener.ViewNotFound.SearchedLocations);
            Assert.Equal("myview", listener.ViewNotFound.ViewName);
        }
        public async Task ExecuteAsync_UsesContentType_FromPartialViewResult()
        {
            // Arrange
            var context = GetActionContext();
            var executor = GetViewExecutor();

            var contentType = MediaTypeHeaderValue.Parse("application/x-my-content-type");

            var viewResult = new PartialViewResult
            {
                ViewName = "my-view",
                ContentType = contentType,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            await executor.ExecuteAsync(context, Mock.Of<IView>(), viewResult);

            // Assert
            Assert.Equal("application/x-my-content-type; charset=utf-8", context.HttpContext.Response.ContentType);

            // Check if the original instance provided by the user has not changed.
            // Since we do not have access to the new instance created within the view executor,
            // check if at least the content is the same.
            Assert.Null(contentType.Encoding);
        }
        public void ModelAs_Null_ShouldFail()
        {
            ActionResult result = new PartialViewResult();
            string failureMessage = FailureMessageHelper.Format(FailureMessages.ViewResultBase_NullModel, typeof(Object).Name);

            Action a = () =>
            {
                result.Should().BePartialViewResult().ModelAs<Object>();
            };

            a.ShouldThrow<Exception>()
                    .WithMessage(failureMessage);
        }
예제 #49
0
        ///// <summary>
        ///// 
        ///// </summary>
        ///// <param name="htmlHelper"></param>
        ///// <param name="partialViewName"></param>
        ///// <param name="viewData"></param>
        ///// <param name="model"></param>
        ///// <param name="tempData"></param>
        ///// <param name="idMode"></param>
        ///// <param name="id"></param>
        ///// <returns></returns>
        //public static string RenderExtPartial(this HtmlHelper htmlHelper, string partialViewName, ViewDataDictionary viewData, object model, TempDataDictionary tempData, IDMode idMode, string id)
        //{
        //    if (String.IsNullOrEmpty(partialViewName))
        //    {
        //        throw new ArgumentException("Value cannot be null or empty.", "partialViewName");
        //    }

        //    return new PartialViewRenderer().Render(htmlHelper.ViewContext, partialViewName, viewData, model, tempData, idMode, id);
        //}
        
        /// <summary>
        /// Renders the partial view with the parent's view data
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="partialViewName"></param>
        /// <param name="viewData"></param>
        /// <param name="model"></param>
        /// <param name="tempData"></param>
        /// <param name="idMode"></param>
        /// <param name="controlId"></param>
        /// <param name="containerId"></param>
        /// <param name="index"></param>
        /// <param name="ns"></param>
        /// <param name="mode"></param>
        /// <param name="wrapByScriptTag"></param>
        /// <param name="singleControl"></param>
        /// <param name="items"></param>
        /// <param name="controlToRender"></param>
        /// <param name="containerConfig"></param>
        /// <returns></returns>
        public static IHtmlString ExtPartial(this HtmlHelper htmlHelper, 
            string partialViewName, 
            ViewDataDictionary viewData = null, 
            object model = null, 
            TempDataDictionary tempData = null, 
            IDMode idMode = IDMode.Static, 
            string controlId = null, 
            string containerId = null, 
            int index = 0, 
            string ns = null, 
            RenderMode mode = RenderMode.RenderTo, 
            bool wrapByScriptTag = true,
            bool singleControl = false,
            bool items = false,
            string controlToRender = null,
            Container.Config containerConfig = null)
        {
            if (String.IsNullOrEmpty(partialViewName))
            {
                throw new ArgumentException("Value cannot be null or empty.", "partialViewName");
            }

            string divId = null;
            if (containerId.IsEmpty() && mode == RenderMode.RenderTo)
            {
                containerId = BaseControl.GenerateID();
                divId = containerId;
            }

            PartialViewResult result = new PartialViewResult();
            result.WriteToString = true;

            result.ViewName = partialViewName;

            result.ViewData = viewData ?? htmlHelper.ViewData;

            if (model != null)
            {
                result.ViewData.Model = model;
            }

            if (tempData != null)
            {
                result.TempData = tempData;
            }

            result.IDMode = idMode;
            result.ControlId = controlId;
            result.ContainerId = containerId;
            result.Index = index;
            result.Namespace = ns;
            result.RenderMode = mode;
            result.WrapByScriptTag = wrapByScriptTag;
            result.SingleControl = singleControl;
            result.Items = items;
            result.ControlToRender = controlToRender;
            result.ContainerConfig = containerConfig;

            result.ExecuteResult(htmlHelper.ViewContext);

            if (divId != null)
            {
                return new HtmlString(string.Format("<div id=\"{0}\"></div>{1}", divId, result.Output));
            }

            return new HtmlString(result.Output);
        }
예제 #50
0
        public void FindView_ReturnsExpectedNotFoundResult_WithGetViewLocations()
        {
            // Arrange
            var expectedLocations = new[] { "location1", "location2" };
            var context = GetActionContext();
            var executor = GetViewExecutor();

            var viewName = "myview";
            var viewEngine = new Mock<IViewEngine>(MockBehavior.Strict);
            viewEngine
                .Setup(e => e.GetView(/*executingFilePath*/ null, "myview", /*isMainPage*/ false))
                .Returns(ViewEngineResult.NotFound("myview", expectedLocations))
                .Verifiable();
            viewEngine
                .Setup(e => e.FindView(context, "myview", /*isMainPage*/ false))
                .Returns(ViewEngineResult.NotFound("myview", Enumerable.Empty<string>()));

            var viewResult = new PartialViewResult
            {
                ViewName = viewName,
                ViewEngine = viewEngine.Object,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            var result = executor.FindView(context, viewResult);

            // Assert
            Assert.False(result.Success);
            Assert.Null(result.View);
            Assert.Equal(expectedLocations, result.SearchedLocations);
        }
예제 #51
0
        /// <summary>
        /// Executes the <see cref="IView"/> asynchronously.
        /// </summary>
        /// <param name="actionContext">The <see cref="ActionContext"/> associated with the current request.</param>
        /// <param name="view">The <see cref="IView"/>.</param>
        /// <param name="viewResult">The <see cref="PartialViewResult"/>.</param>
        /// <returns>A <see cref="Task"/> which will complete when view execution is completed.</returns>
        public virtual Task ExecuteAsync(ActionContext actionContext, IView view, PartialViewResult viewResult)
        {
            if (actionContext == null)
            {
                throw new ArgumentNullException(nameof(actionContext));
            }

            if (view == null)
            {
                throw new ArgumentNullException(nameof(view));
            }

            if (viewResult == null)
            {
                throw new ArgumentNullException(nameof(viewResult));
            }

            Logger.PartialViewResultExecuting(view);

            return ExecuteAsync(
                actionContext,
                view,
                viewResult.ViewData,
                viewResult.TempData,
                viewResult.ContentType,
                viewResult.StatusCode);
        }
 public void BePartialView_GivenPartial_ShouldPass()
 {
     ActionResult result = new PartialViewResult();
     result.Should().BePartialViewResult();
 }
예제 #53
0
 public ActionResult View1(string containerId)
 {
     PartialViewResult pr = new PartialViewResult(containerId);
     return pr;
 }
예제 #54
0
        public async Task ExecuteResultAsync_FindsAndExecutesView()
        {
            // Arrange
            var viewName = "myview";
            var context = GetActionContext();

            var view = new Mock<IView>(MockBehavior.Strict);
            view
                .Setup(v => v.RenderAsync(It.IsAny<ViewContext>()))
                .Returns(Task.FromResult(0))
                .Verifiable();

            view
                .As<IDisposable>()
                .Setup(v => v.Dispose())
                .Verifiable();

            // Used by logging
            view
                .SetupGet(v => v.Path)
                .Returns("myview.cshtml");

            var viewEngine = new Mock<IViewEngine>(MockBehavior.Strict);
            viewEngine
                .Setup(v => v.GetView(/*executingFilePath*/ null, "myview", /*isMainPage*/ false))
                .Returns(ViewEngineResult.NotFound("myview", Enumerable.Empty<string>()))
                .Verifiable();
            viewEngine
                .Setup(v => v.FindView(It.IsAny<ActionContext>(), "myview", /*isMainPage*/ false))
                .Returns(ViewEngineResult.Found("myview", view.Object))
                .Verifiable();

            var viewResult = new PartialViewResult
            {
                ViewName = viewName,
                ViewEngine = viewEngine.Object,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            await viewResult.ExecuteResultAsync(context);

            // Assert
            view.Verify();
            viewEngine.Verify();
        }
        public void FindView_WritesDiagnostic_ViewFound()
        {
            // Arrange
            var diagnosticSource = new DiagnosticListener("Test");
            var listener = new TestDiagnosticListener();
            diagnosticSource.SubscribeWithAdapter(listener);

            var context = GetActionContext();
            var executor = GetViewExecutor(diagnosticSource);

            var viewName = "myview";
            var viewResult = new PartialViewResult
            {
                ViewName = viewName,
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider()),
                TempData = Mock.Of<ITempDataDictionary>(),
            };

            // Act
            var viewEngineResult = executor.FindView(context, viewResult);

            // Assert
            Assert.Equal(viewName, viewEngineResult.ViewName);

            Assert.NotNull(listener.ViewFound);
            Assert.NotNull(listener.ViewFound.ActionContext);
            Assert.NotNull(listener.ViewFound.Result);
            Assert.NotNull(listener.ViewFound.View);
            Assert.True(listener.ViewFound.IsPartial);
            Assert.Equal("myview", listener.ViewFound.ViewName);
        }
        /// <summary>
        /// Attempts to find the <see cref="IView"/> associated with <paramref name="viewResult"/>.
        /// </summary>
        /// <param name="actionContext">The <see cref="ActionContext"/> associated with the current request.</param>
        /// <param name="viewResult">The <see cref="PartialViewResult"/>.</param>
        /// <returns>A <see cref="ViewEngineResult"/>.</returns>
        public virtual ViewEngineResult FindView(ActionContext actionContext, PartialViewResult viewResult)
        {
            if (actionContext == null)
            {
                throw new ArgumentNullException(nameof(actionContext));
            }

            if (viewResult == null)
            {
                throw new ArgumentNullException(nameof(viewResult));
            }

            var viewEngine = viewResult.ViewEngine ?? ViewEngine;
            var viewName = viewResult.ViewName ?? actionContext.ActionDescriptor.Name;

            var result = viewEngine.GetView(executingFilePath: null, viewPath: viewName, isMainPage: false);
            var originalResult = result;
            if (!result.Success)
            {
                result = viewEngine.FindView(actionContext, viewName, isMainPage: false);
            }

            if (!result.Success)
            {
                if (originalResult.SearchedLocations.Any())
                {
                    if (result.SearchedLocations.Any())
                    {
                        // Return a new ViewEngineResult listing all searched locations.
                        var locations = new List<string>(originalResult.SearchedLocations);
                        locations.AddRange(result.SearchedLocations);
                        result = ViewEngineResult.NotFound(viewName, locations);
                    }
                    else
                    {
                        // GetView() searched locations but FindView() did not. Use first ViewEngineResult.
                        result = originalResult;
                    }
                }
            }

            if (result.Success)
            {
                DiagnosticSource.ViewFound(
                    actionContext,
                    isMainPage: false,
                    viewResult: viewResult,
                    viewName: viewName,
                    view: result.View);

                Logger.PartialViewFound(viewName);
            }
            else
            {
                DiagnosticSource.ViewNotFound(
                    actionContext,
                    isMainPage: false,
                    viewResult: viewResult,
                    viewName: viewName,
                    searchedLocations: result.SearchedLocations);

                Logger.PartialViewNotFound(viewName, result.SearchedLocations);
            }

            return result;
        }