public void Activate_InitializesTagHelpersWithMultipleInitializers()
        {
            // Arrange
            var services = new ServiceCollection();
            services.InitializeTagHelper<TestTagHelper>((h, vc) =>
            {
                h.Name = "Test 1";
                h.Number = 100;
            });
            services.InitializeTagHelper<TestTagHelper>((h, vc) =>
            {
                h.Name += ", Test 2";
                h.Number += 100;
            });
            var httpContext = MakeHttpContext(services.BuildServiceProvider());
            var viewContext = MakeViewContext(httpContext);
            var activator = new DefaultTagHelperActivator();
            var helper = new TestTagHelper();

            // Act
            activator.Activate(helper, viewContext);

            // Assert
            Assert.Equal("Test 1, Test 2", helper.Name);
            Assert.Equal(200, helper.Number);
        }
        public void Activate_InitializesTagHelpers(string name, int number)
        {
            // Arrange
            var services = new ServiceCollection();
            services.InitializeTagHelper<TestTagHelper>((h, vc) =>
            {
                h.Name = name;
                h.Number = number;
                h.ViewDataValue = vc.ViewData["TestData"];
            });
            var httpContext = MakeHttpContext(services.BuildServiceProvider());
            var viewContext = MakeViewContext(httpContext);
            var viewDataValue = new object();
            viewContext.ViewData.Add("TestData", viewDataValue);
            var activator = new DefaultTagHelperActivator();
            var helper = new TestTagHelper();

            // Act
            activator.Activate(helper, viewContext);

            // Assert
            Assert.Equal(name, helper.Name);
            Assert.Equal(number, helper.Number);
            Assert.Same(viewDataValue, helper.ViewDataValue);
        }
        private static TestRazorPage CreateTestRazorPage()
        {
            var modelMetadataProvider   = new EmptyModelMetadataProvider();
            var modelExpressionProvider = new ModelExpressionProvider(modelMetadataProvider, new ExpressionTextCache());
            var activator = new RazorPageActivator(
                modelMetadataProvider,
                new UrlHelperFactory(),
                new JsonHelper(
                    new JsonOutputFormatter(new JsonSerializerSettings(), ArrayPool <char> .Shared),
                    ArrayPool <char> .Shared),
                new DiagnosticListener("Microsoft.AspNetCore"),
                new HtmlTestEncoder(),
                modelExpressionProvider);

            var serviceProvider    = new Mock <IServiceProvider>();
            var typeActivator      = new TypeActivatorCache();
            var tagHelperActivator = new DefaultTagHelperActivator(typeActivator);
            var myService          = new MyService();

            serviceProvider.Setup(mock => mock.GetService(typeof(MyService)))
            .Returns(myService);
            serviceProvider.Setup(mock => mock.GetService(typeof(ITagHelperFactory)))
            .Returns(new DefaultTagHelperFactory(tagHelperActivator));
            serviceProvider.Setup(mock => mock.GetService(typeof(ITagHelperActivator)))
            .Returns(tagHelperActivator);
            serviceProvider.Setup(mock => mock.GetService(typeof(ITypeActivatorCache)))
            .Returns(typeActivator);
            serviceProvider.Setup(mock => mock.GetService(It.Is <Type>(serviceType =>
                                                                       serviceType.GetTypeInfo().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(), new ModelStateDictionary());
            var viewContext   = new ViewContext(
                actionContext,
                Mock.Of <IView>(),
                viewData,
                Mock.Of <ITempDataDictionary>(),
                TextWriter.Null,
                new HtmlHelperOptions());

            return(new TestRazorPage
            {
                ViewContext = viewContext
            });
        }
Beispiel #4
0
    public void LinkTagHelper_DoesNotUseMemoryCacheInstanceFromDI()
    {
        // Arrange
        var activator   = new DefaultTagHelperActivator();
        var viewContext = CreateViewContext();

        var linkTagHelper = activator.Create <LinkTagHelper>(viewContext);

        Assert.Same(CacheProvider.Cache, linkTagHelper.Cache);
        Assert.Same(HostingEnvironment, linkTagHelper.HostingEnvironment);
        Assert.Same(FileVersionProvider, linkTagHelper.FileVersionProvider);
    }
        public void Activate_InitializesTagHelpersAfterActivatingProperties()
        {
            // Arrange
            var services = new ServiceCollection();
            services.InitializeTagHelper<TestTagHelper>((h, _) => h.ViewContext = MakeViewContext(MakeHttpContext()));
            var httpContext = MakeHttpContext(services.BuildServiceProvider());
            var viewContext = MakeViewContext(httpContext);
            var activator = new DefaultTagHelperActivator();
            var helper = new TestTagHelper();

            // Act
            activator.Activate(helper, viewContext);

            // Assert
            Assert.NotSame(viewContext, helper.ViewContext);
        }
        public void CreateTagHelper_InitializesTagHelpers()
        {
            // Arrange
            var httpContext = new DefaultHttpContext()
            {
                RequestServices = new ServiceCollection().BuildServiceProvider()
            };
            var viewContext = MakeViewContext(httpContext);
            var viewDataValue = new object();
            viewContext.ViewData.Add("TestData", viewDataValue);
            var activator = new DefaultTagHelperActivator(new TypeActivatorCache());

            // Act
            var helper = activator.Create<TestTagHelper>(viewContext);

            // Assert
            Assert.NotNull(helper);
        }
        private static TestRazorPage CreateTestRazorPage()
        {
            var activator          = new RazorPageActivator(new EmptyModelMetadataProvider());
            var serviceProvider    = new Mock <IServiceProvider>();
            var typeActivator      = new TypeActivatorCache();
            var tagHelperActivator = new DefaultTagHelperActivator(typeActivator);
            var myService          = new MyService();

            serviceProvider.Setup(mock => mock.GetService(typeof(MyService)))
            .Returns(myService);
            serviceProvider.Setup(mock => mock.GetService(typeof(ITagHelperFactory)))
            .Returns(new DefaultTagHelperFactory(tagHelperActivator));
            serviceProvider.Setup(mock => mock.GetService(typeof(ITagHelperActivator)))
            .Returns(tagHelperActivator);
            serviceProvider.Setup(mock => mock.GetService(typeof(ITypeActivatorCache)))
            .Returns(typeActivator);
            serviceProvider.Setup(mock => mock.GetService(It.Is <Type>(serviceType =>
                                                                       serviceType.GetTypeInfo().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
            });
        }
Beispiel #8
0
    public void CreateTagHelper_InitializesTagHelpers()
    {
        // Arrange
        var httpContext = new DefaultHttpContext()
        {
            RequestServices = new ServiceCollection().BuildServiceProvider()
        };
        var viewContext   = MakeViewContext(httpContext);
        var viewDataValue = new object();

        viewContext.ViewData.Add("TestData", viewDataValue);
        var activator = new DefaultTagHelperActivator();

        // Act
        var helper = activator.Create <TestTagHelper>(viewContext);

        // Assert
        Assert.NotNull(helper);
    }
        public void Activate_InitializesTagHelpersWithCorrectInitializers()
        {
            // Arrange
            var services = new ServiceCollection();
            services.InitializeTagHelper<TestTagHelper>((h, vc) =>
            {
                h.Name = "Test 1";
                h.Number = 100;
            });
            services.InitializeTagHelper<AnotherTestTagHelper>((h, vc) =>
            {
                h.Name = "Test 2";
                h.Number = 102;
            });
            var httpContext = MakeHttpContext(services.BuildServiceProvider());
            var viewContext = MakeViewContext(httpContext);
            var activator = new DefaultTagHelperActivator();
            var testTagHelper = new TestTagHelper();
            var anotherTestTagHelper = new AnotherTestTagHelper();

            // Act
            activator.Activate(testTagHelper, viewContext);
            activator.Activate(anotherTestTagHelper, viewContext);

            // Assert
            Assert.Equal("Test 1", testTagHelper.Name);
            Assert.Equal(100, testTagHelper.Number);
            Assert.Equal("Test 2", anotherTestTagHelper.Name);
            Assert.Equal(102, anotherTestTagHelper.Number);
        }