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); }
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); }
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); }
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); }
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); }
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); }