private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper, IHtmlGenerator htmlGenerator) { var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var bindingContext = new ActionBindingContext() { ValidatorProvider = new DataAnnotationsModelValidatorProvider(), }; var bindingContextAccessor = new MockScopedInstance <ActionBindingContext>(); bindingContextAccessor.Value = bindingContext; var serviceProvider = new Mock <IServiceProvider>(); serviceProvider .Setup(s => s.GetService(typeof(ICompositeViewEngine))) .Returns(viewEngine); serviceProvider .Setup(s => s.GetService(typeof(IUrlHelper))) .Returns(urlHelper); serviceProvider .Setup(s => s.GetService(typeof(IViewComponentHelper))) .Returns(new Mock <IViewComponentHelper>().Object); httpContext.RequestServices = serviceProvider.Object; if (htmlGenerator == null) { htmlGenerator = new DefaultHtmlGenerator( GetAntiForgeryInstance(), bindingContextAccessor, provider, urlHelper); } // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper(htmlGenerator, viewEngine, provider); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } serviceProvider .Setup(s => s.GetService(typeof(IHtmlHelper))) .Returns(() => innerHelper); var htmlHelper = new HtmlHelper <TModel>(htmlGenerator, viewEngine, provider); var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), viewData, new StringWriter()); htmlHelper.Contextualize(viewContext); return(htmlHelper); }
private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper, IHtmlGenerator htmlGenerator, string idAttributeDotReplacement) { var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var options = new MvcOptions(); if (!string.IsNullOrEmpty(idAttributeDotReplacement)) { options.HtmlHelperOptions.IdAttributeDotReplacement = idAttributeDotReplacement; } options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider()); var optionsAccessor = new Mock <IOptions <MvcOptions> >(); optionsAccessor .SetupGet(o => o.Options) .Returns(options); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider .Setup(s => s.GetService(typeof(ICompositeViewEngine))) .Returns(viewEngine); serviceProvider .Setup(s => s.GetService(typeof(IUrlHelper))) .Returns(urlHelper); serviceProvider .Setup(s => s.GetService(typeof(IViewComponentHelper))) .Returns(new Mock <IViewComponentHelper>().Object); httpContext.RequestServices = serviceProvider.Object; if (htmlGenerator == null) { htmlGenerator = new DefaultHtmlGenerator( GetAntiForgeryInstance(), optionsAccessor.Object, provider, urlHelper, new CommonTestEncoder()); } // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper( htmlGenerator, viewEngine, provider, new CommonTestEncoder(), new UrlEncoder(), new JavaScriptStringEncoder()); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } serviceProvider .Setup(s => s.GetService(typeof(IHtmlHelper))) .Returns(() => innerHelper); var htmlHelper = new HtmlHelper <TModel>( htmlGenerator, viewEngine, provider, new CommonTestEncoder(), new UrlEncoder(), new JavaScriptStringEncoder()); var viewContext = new ViewContext( actionContext, Mock.Of <IView>(), viewData, null, new StringWriter(), options.HtmlHelperOptions); htmlHelper.Contextualize(viewContext); return(htmlHelper); }
private IHtmlHelper<TestModel> MockHtmlHelper() { Mock<IOptions<MvcViewOptions>> optionsMock = new Mock<IOptions<MvcViewOptions>>(); optionsMock.SetupGet(mock => mock.Value).Returns(new MvcViewOptions()); IModelMetadataProvider provider = new EmptyModelMetadataProvider(); IHtmlGenerator generator = new DefaultHtmlGenerator( Mock.Of<IAntiforgery>(), optionsMock.Object, provider, Mock.Of<IUrlHelper>(), Mock.Of<IHtmlEncoder>()); HtmlHelper<TestModel> html = new HtmlHelper<TestModel>( generator, Mock.Of<ICompositeViewEngine>(), provider, Mock.Of<IHtmlEncoder>(), Mock.Of<IUrlEncoder>(), Mock.Of<IJavaScriptStringEncoder>()); ViewContext context = new ViewContext(); context.ViewData = new ViewDataDictionary<TestModel>(context.ViewData, testModel); html.Contextualize(context); return html; }
private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper, IHtmlGenerator htmlGenerator, string idAttributeDotReplacement) { var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var options = new MvcViewOptions(); if (!string.IsNullOrEmpty(idAttributeDotReplacement)) { options.HtmlHelperOptions.IdAttributeDotReplacement = idAttributeDotReplacement; } var localizationOptionsAccesor = new Mock <IOptions <MvcDataAnnotationsLocalizationOptions> >(); localizationOptionsAccesor.SetupGet(o => o.Value).Returns(new MvcDataAnnotationsLocalizationOptions()); options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider( new ValidationAttributeAdapterProvider(), localizationOptionsAccesor.Object, stringLocalizerFactory: null)); var optionsAccessor = new Mock <IOptions <MvcViewOptions> >(); optionsAccessor .SetupGet(o => o.Value) .Returns(options); var urlHelperFactory = new Mock <IUrlHelperFactory>(); urlHelperFactory .Setup(f => f.GetUrlHelper(It.IsAny <ActionContext>())) .Returns(urlHelper); if (htmlGenerator == null) { htmlGenerator = new DefaultHtmlGenerator( Mock.Of <IAntiforgery>(), optionsAccessor.Object, provider, urlHelperFactory.Object, new HtmlTestEncoder()); } // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper( htmlGenerator, viewEngine, provider, new TestViewBufferScope(), new HtmlTestEncoder(), UrlEncoder.Default, JavaScriptEncoder.Default); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } var serviceProvider = new ServiceCollection() .AddSingleton(viewEngine) .AddSingleton(urlHelperFactory.Object) .AddSingleton(Mock.Of <IViewComponentHelper>()) .AddSingleton(innerHelper) .AddSingleton <IViewBufferScope, TestViewBufferScope>() .BuildServiceProvider(); httpContext.RequestServices = serviceProvider; var htmlHelper = new HtmlHelper <TModel>( htmlGenerator, viewEngine, provider, new TestViewBufferScope(), new HtmlTestEncoder(), UrlEncoder.Default, JavaScriptEncoder.Default); var viewContext = new ViewContext( actionContext, Mock.Of <IView>(), viewData, new TempDataDictionary( httpContext, Mock.Of <ITempDataProvider>()), new StringWriter(), options.HtmlHelperOptions); htmlHelper.Contextualize(viewContext); return(htmlHelper); }
private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper) { var httpContext = new Mock <HttpContext>(); httpContext .Setup(o => o.Response) .Returns(Mock.Of <HttpResponse>()); httpContext .Setup(o => o.Items) .Returns(new Dictionary <object, object>()); var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()); var actionBindingContext = new ActionBindingContext(actionContext, provider, Mock.Of <IModelBinder>(), Mock.Of <IValueProvider>(), Mock.Of <IInputFormatterSelector>(), new DataAnnotationsModelValidatorProvider()); var actionBindingContextProvider = new Mock <IActionBindingContextProvider>(); actionBindingContextProvider .Setup(c => c.GetActionBindingContextAsync(It.IsAny <ActionContext>())) .Returns(Task.FromResult(actionBindingContext)); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider .Setup(s => s.GetService(typeof(ICompositeViewEngine))) .Returns(viewEngine); serviceProvider .Setup(s => s.GetService(typeof(IUrlHelper))) .Returns(urlHelper); serviceProvider .Setup(s => s.GetService(typeof(IViewComponentHelper))) .Returns(new Mock <IViewComponentHelper>().Object); httpContext .Setup(o => o.RequestServices) .Returns(serviceProvider.Object); var htmlGenerator = new DefaultHtmlGenerator( actionBindingContextProvider.Object, GetAntiForgeryInstance(), provider, urlHelper); // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper(htmlGenerator, viewEngine, provider); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } serviceProvider .Setup(s => s.GetService(typeof(IHtmlHelper))) .Returns(() => innerHelper); var htmlHelper = new HtmlHelper <TModel>(htmlGenerator, viewEngine, provider); var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), viewData, new StringWriter()); htmlHelper.Contextualize(viewContext); return(htmlHelper); }