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
            });
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }