From 96d97f65e9da031a5717c22da3b100a08401a502 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Thu, 6 Apr 2017 16:51:03 -0700 Subject: [PATCH] Allow null parent tag when calling `GetTagHelpersGivenParent`. - A `null` parent tag in all of our other API represents "any" parent tag, or in this case "root". Prior to this change we'd expect the caller to do their own verification of the parent and then assume all `TagHelperDescriptor`s are valid; this isn't sufficient because only our code base should have that knowledge. #1188 --- .../DefaultTagHelperFactsService.cs | 5 ----- .../DefaultTagHelperFactsServiceTest.cs | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperFactsService.cs b/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperFactsService.cs index 30e2c381af..ea6224cac3 100644 --- a/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperFactsService.cs +++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperFactsService.cs @@ -138,11 +138,6 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor throw new ArgumentNullException(nameof(documentContext)); } - if (parentTag == null) - { - throw new ArgumentNullException(nameof(parentTag)); - } - var matchingDescriptors = new List(); var descriptors = documentContext?.TagHelpers; if (descriptors?.Count == 0) diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs index 90f0df6420..d7336c9965 100644 --- a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DefaultTagHelperFactsServiceTest.cs @@ -286,6 +286,26 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor Assert.Equal(expectedDescriptors, descriptors, TagHelperDescriptorComparer.CaseSensitive); } + [Fact] + public void GetTagHelpersGivenParent_AllowsRootParentTag() + { + // Arrange + var documentDescriptors = new[] + { + ITagHelperDescriptorBuilder.Create("TestType", "TestAssembly") + .TagMatchingRule(rule => rule.RequireTagName("div")) + .Build() + }; + var documentContext = TagHelperDocumentContext.Create(string.Empty, documentDescriptors); + var service = new DefaultTagHelperFactsService(); + + // Act + var descriptors = service.GetTagHelpersGivenParent(documentContext, parentTag: null /* root */); + + // Assert + Assert.Equal(documentDescriptors, descriptors, TagHelperDescriptorComparer.CaseSensitive); + } + [Fact] public void GetTagHelpersGivenParent_AllowsUnspecifiedParentTagHelpers() {