Exemplo n.º 1
0
        public void GetBinding_ReturnsNullForUnprefixedTags(string tagName)
        {
            // Arrange
            var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                .TagMatchingRuleDescriptor(rule => rule.RequireTagName(tagName))
                                .Build();
            var descriptors     = new[] { divDescriptor };
            var tagHelperBinder = new TagHelperBinder("th:", descriptors);

            // Act
            var bindingResult = tagHelperBinder.GetBinding(
                tagName: "div",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p");

            // Assert
            Assert.Null(bindingResult);
        }
Exemplo n.º 2
0
        public void GetBinding_ReturnsNullBindingResultPrefixAsTagName()
        {
            // Arrange
            var catchAllDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                     .TagMatchingRuleDescriptor(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName))
                                     .Build();
            var descriptors     = new[] { catchAllDescriptor };
            var tagHelperBinder = new TagHelperBinder("th", descriptors);

            // Act
            var bindingResult = tagHelperBinder.GetBinding(
                tagName: "th",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p");

            // Assert
            Assert.Null(bindingResult);
        }
Exemplo n.º 3
0
        public void GetDescriptors_DuplicateDescriptorsAreNotPartOfTagHelperDescriptorPool()
        {
            // Arrange
            var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div"))
                                .Build();
            var descriptors     = new TagHelperDescriptor[] { divDescriptor, divDescriptor };
            var tagHelperBinder = new TagHelperBinder(null, descriptors);

            // Act
            var bindingResult = tagHelperBinder.GetBinding(
                tagName: "div",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p");

            // Assert
            var descriptor = Assert.Single(bindingResult.Descriptors);

            Assert.Same(divDescriptor, descriptor);
        }
        public void GetBinding_IsAttributeMatch_SingleAttributeMatch()
        {
            // Arrange
            var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div"))
                                .AddMetadata(TagHelperMetadata.Common.ClassifyAttributesOnly, bool.TrueString)
                                .Build();

            var descriptors     = new[] { divDescriptor, };
            var tagHelperBinder = new TagHelperBinder("", descriptors);

            // Act
            var bindingResult = tagHelperBinder.GetBinding(
                tagName: "div",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p",
                parentIsTagHelper: false);

            // Assert
            Assert.True(bindingResult.IsAttributeMatch);
        }
        public void GetBinding_ReturnsBindingResultDescriptorsForPrefixedTags()
        {
            // Arrange
            var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div"))
                                .Build();
            var descriptors     = new[] { divDescriptor };
            var tagHelperBinder = new TagHelperBinder("th:", descriptors);

            // Act
            var bindingResult = tagHelperBinder.GetBinding(
                tagName: "th:div",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p",
                parentIsTagHelper: false);

            // Assert
            var descriptor = Assert.Single(bindingResult.Descriptors);

            Assert.Same(divDescriptor, descriptor);
        }
Exemplo n.º 6
0
        public void GetDescriptors_ReturnsNothingForUnregisteredTags()
        {
            // Arrange
            var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div"))
                                .Build();
            var spanDescriptor = TagHelperDescriptorBuilder.Create("foo2", "SomeAssembly")
                                 .TagMatchingRuleDescriptor(rule => rule.RequireTagName("span"))
                                 .Build();
            var descriptors     = new TagHelperDescriptor[] { divDescriptor, spanDescriptor };
            var tagHelperBinder = new TagHelperBinder(null, descriptors);

            // Act
            var tagHelperBinding = tagHelperBinder.GetBinding(
                tagName: "foo",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p");

            // Assert
            Assert.Null(tagHelperBinding);
        }
        private static TagHelperDescriptor CreateTagHelperDescriptor(
            string tagName,
            string typeName,
            string assemblyName,
            IEnumerable <Action <BoundAttributeDescriptorBuilder> > attributes    = null,
            IEnumerable <Action <TagMatchingRuleDescriptorBuilder> > ruleBuilders = null)
        {
            var builder = TagHelperDescriptorBuilder.Create(typeName, assemblyName);

            builder.TypeName(typeName);

            if (attributes != null)
            {
                foreach (var attributeBuilder in attributes)
                {
                    builder.BoundAttributeDescriptor(attributeBuilder);
                }
            }

            if (ruleBuilders != null)
            {
                foreach (var ruleBuilder in ruleBuilders)
                {
                    builder.TagMatchingRuleDescriptor(innerRuleBuilder =>
                    {
                        innerRuleBuilder.RequireTagName(tagName);
                        ruleBuilder(innerRuleBuilder);
                    });
                }
            }
            else
            {
                builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName));
            }

            var descriptor = builder.Build();

            return(descriptor);
        }
        public void GetDescriptors_ReturnsCatchAllsWithEveryTagName()
        {
            // Arrange
            var divDescriptor = TagHelperDescriptorBuilder.Create("foo1", "SomeAssembly")
                                .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div"))
                                .Build();
            var spanDescriptor = TagHelperDescriptorBuilder.Create("foo2", "SomeAssembly")
                                 .TagMatchingRuleDescriptor(rule => rule.RequireTagName("span"))
                                 .Build();
            var catchAllDescriptor = TagHelperDescriptorBuilder.Create("foo3", "SomeAssembly")
                                     .TagMatchingRuleDescriptor(rule => rule.RequireTagName(TagHelperMatchingConventions.ElementCatchAllName))
                                     .Build();
            var descriptors     = new TagHelperDescriptor[] { divDescriptor, spanDescriptor, catchAllDescriptor };
            var tagHelperBinder = new TagHelperBinder(null, descriptors);

            // Act
            var divBinding = tagHelperBinder.GetBinding(
                tagName: "div",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p",
                parentIsTagHelper: false);
            var spanBinding = tagHelperBinder.GetBinding(
                tagName: "span",
                attributes: Array.Empty <KeyValuePair <string, string> >(),
                parentTagName: "p",
                parentIsTagHelper: false);

            // Assert
            // For divs
            Assert.Equal(2, divBinding.Descriptors.Count());
            Assert.Contains(divDescriptor, divBinding.Descriptors);
            Assert.Contains(catchAllDescriptor, divBinding.Descriptors);

            // For spans
            Assert.Equal(2, spanBinding.Descriptors.Count());
            Assert.Contains(spanDescriptor, spanBinding.Descriptors);
            Assert.Contains(catchAllDescriptor, spanBinding.Descriptors);
        }
Exemplo n.º 9
0
        public void ProcessDesignTime_WithImportsAndTagHelpers_SetsOnCodeDocument()
        {
            // Arrange
            var projectItem        = new TestRazorProjectItem("Index.cshtml");
            var importItem         = new TestRazorProjectItem("_import.cshtml");
            var expectedImports    = new[] { RazorSourceDocument.ReadFrom(importItem) };
            var expectedTagHelpers = new[]
            {
                TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly").Build(),
                TagHelperDescriptorBuilder.Create("Test2TagHelper", "TestAssembly").Build(),
            };

            var projectEngine = RazorProjectEngine.Create(RazorConfiguration.Default, TestRazorProjectFileSystem.Empty);

            // Act
            var codeDocument = projectEngine.ProcessDesignTime(RazorSourceDocument.ReadFrom(projectItem), expectedImports, expectedTagHelpers);

            // Assert
            var tagHelpers = codeDocument.GetTagHelpers();

            Assert.Same(expectedTagHelpers, tagHelpers);
            Assert.Equal(expectedImports, codeDocument.Imports);
        }
Exemplo n.º 10
0
        public void GetBinding_CaseSensitiveRule_CaseMismatch_ReturnsNull()
        {
            // Arrange
            var divTagHelper = TagHelperDescriptorBuilder.Create("DivTagHelper", "SomeAssembly")
                               .TagMatchingRuleDescriptor(rule => rule.RequireTagName("div"))
                               .SetCaseSensitive()
                               .Build();
            var expectedDescriptors = new[] { divTagHelper };
            var expectedAttributes  = new[]
            {
                new KeyValuePair <string, string>("class", "something")
            };
            var tagHelperBinder = new TagHelperBinder("th:", expectedDescriptors);

            // Act
            var bindingResult = tagHelperBinder.GetBinding(
                tagName: "th:Div",
                attributes: expectedAttributes,
                parentTagName: "body",
                parentIsTagHelper: false);

            // Assert
            Assert.Null(bindingResult);
        }