private static TestRazorPage CreateTestRazorPage() { var activator = new RazorPageActivator(new EmptyModelMetadataProvider()); var serviceProvider = new Mock <IServiceProvider>(); var typeActivator = new DefaultTypeActivatorCache(); var myService = new MyService(); serviceProvider.Setup(mock => mock.GetService(typeof(MyService))) .Returns(myService); serviceProvider.Setup(mock => mock.GetService(typeof(ITagHelperActivator))) .Returns(new DefaultTagHelperActivator()); serviceProvider.Setup(mock => mock.GetService(typeof(ITypeActivatorCache))) .Returns(typeActivator); serviceProvider.Setup(mock => mock.GetService(It.Is <Type>(serviceType => serviceType.IsGenericType && serviceType.GetGenericTypeDefinition() == typeof(IEnumerable <>)))) .Returns <Type>(serviceType => { var enumerableType = serviceType.GetGenericArguments().First(); return(typeof(Enumerable).GetMethod("Empty").MakeGenericMethod(enumerableType).Invoke(null, null)); }); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.RequestServices) .Returns(serviceProvider.Object); var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()); var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider()); var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), viewData, Mock.Of <ITempDataDictionary>(), TextWriter.Null, new HtmlHelperOptions()); return(new TestRazorPage { ViewContext = viewContext }); }
public void Activate_ActivatesAndContextualizesPropertiesOnViews() { // Arrange var activator = new RazorPageActivator(new EmptyModelMetadataProvider()); var instance = new TestRazorPage(); var myService = new MyService(); var helper = Mock.Of <IHtmlHelper <object> >(); var htmlEncoder = new CommonTestEncoder(); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider.Setup(p => p.GetService(typeof(MyService))) .Returns(myService); serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper <object>))) .Returns(helper); serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) .Returns(htmlEncoder); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.RequestServices) .Returns(serviceProvider.Object); var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()); var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), new ViewDataDictionary(new EmptyModelMetadataProvider()), Mock.Of <ITempDataDictionary>(), TextWriter.Null, new HtmlHelperOptions()); // Act activator.Activate(instance, viewContext); // Assert Assert.Same(helper, instance.Html); Assert.Same(myService, instance.MyService); Assert.Same(viewContext, myService.ViewContext); Assert.Null(instance.MyService2); }
public void Activate_UsesPassedInViewDataDictionaryInstance_IfPassedInTypeMatches() { // Arrange var activator = new RazorPageActivator(new EmptyModelMetadataProvider()); var instance = new TestRazorPage(); var myService = new MyService(); var helper = Mock.Of <IHtmlHelper <object> >(); var htmlEncoder = new CommonTestEncoder(); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider.Setup(p => p.GetService(typeof(MyService))) .Returns(myService); serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper <object>))) .Returns(helper); serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) .Returns(htmlEncoder); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.RequestServices) .Returns(serviceProvider.Object); var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()); var viewData = new ViewDataDictionary <MyModel>(new EmptyModelMetadataProvider()) { Model = new MyModel() }; var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), viewData, Mock.Of <ITempDataDictionary>(), TextWriter.Null, new HtmlHelperOptions()); // Act activator.Activate(instance, viewContext); // Assert Assert.Same(viewData, viewContext.ViewData); }
public void Activate_InstantiatesNewViewDataDictionaryType_IfTheTypeDoesNotMatch() { // Arrange var activator = new RazorPageActivator(new EmptyModelMetadataProvider()); var instance = new TestRazorPage(); var myService = new MyService(); var helper = Mock.Of <IHtmlHelper <object> >(); var htmlEncoder = new HtmlTestEncoder(); var serviceProvider = new ServiceCollection() .AddSingleton(myService) .AddSingleton(helper) .AddSingleton <HtmlEncoder>(htmlEncoder) .AddSingleton <DiagnosticSource>(new DiagnosticListener("Microsoft.Aspnet.Mvc")) .BuildServiceProvider(); var httpContext = new DefaultHttpContext { RequestServices = serviceProvider }; var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var viewData = new ViewDataDictionary <object>(new EmptyModelMetadataProvider()) { Model = new MyModel() }; var viewContext = new ViewContext( actionContext, Mock.Of <IView>(), viewData, Mock.Of <ITempDataDictionary>(), TextWriter.Null, new HtmlHelperOptions()); // Act activator.Activate(instance, viewContext); // Assert Assert.IsType <ViewDataDictionary <MyModel> >(viewContext.ViewData); }
public void Activate_InstantiatesNewViewDataDictionaryType_IfTheTypeDoesNotMatch() { // Arrange var typeActivator = new TypeActivator(); var activator = new RazorPageActivator(typeActivator); var instance = new TestRazorPage(); var myService = new MyService(); var helper = Mock.Of <IHtmlHelper <object> >(); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider.Setup(p => p.GetService(typeof(MyService))) .Returns(myService); serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper <object>))) .Returns(helper); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.RequestServices) .Returns(serviceProvider.Object); var routeContext = new RouteContext(httpContext.Object); var actionContext = new ActionContext(routeContext, new ActionDescriptor()); var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider()) { Model = new MyModel() }; var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), viewData, TextWriter.Null); // Act activator.Activate(instance, viewContext); // Assert Assert.IsType <ViewDataDictionary <MyModel> >(viewContext.ViewData); }
public void Activate_DeterminesModelTypeFromProperty() { // Arrange var activator = new RazorPageActivator(new EmptyModelMetadataProvider()); var instance = new DoesNotDeriveFromRazorPageOfTButHasModelProperty(); var myService = new MyService(); var helper = Mock.Of <IHtmlHelper <object> >(); var htmlEncoder = new CommonTestEncoder(); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider.Setup(p => p.GetService(typeof(MyService))) .Returns(myService); serviceProvider.Setup(p => p.GetService(typeof(IHtmlHelper <object>))) .Returns(helper); serviceProvider.Setup(p => p.GetService(typeof(IHtmlEncoder))) .Returns(htmlEncoder); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.RequestServices) .Returns(serviceProvider.Object); var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()); var viewData = new ViewDataDictionary <object>(new EmptyModelMetadataProvider()); var viewContext = new ViewContext(actionContext, Mock.Of <IView>(), viewData, Mock.Of <ITempDataDictionary>(), TextWriter.Null, new HtmlHelperOptions()); // Act activator.Activate(instance, viewContext); // Assert Assert.IsType <ViewDataDictionary <string> >(viewContext.ViewData); }