From 4f9a6fed93fe60aa7869f57042d9f9442803458e Mon Sep 17 00:00:00 2001 From: NTaylorMullen Date: Sat, 11 Oct 2014 13:10:40 -0700 Subject: [PATCH] Fix inherited TagHelper properties. - Used to only look at declared properties on the tag helper type, now we get the runtime properties. - Fixed Runtime test projec to work with new CLR changes (looks like it was missed). #189 --- .../TagHelpers/TagHelperDescriptorFactory.cs | 3 +-- .../TagHelperDescriptorFactoryTest.cs | 26 +++++++++++++++++++ .../project.json | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorFactory.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorFactory.cs index 6113eed120..558a835211 100644 --- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorFactory.cs +++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperDescriptorFactory.cs @@ -62,8 +62,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers private static IEnumerable GetAttributeDescriptors(Type type) { - var typeInfo = type.GetTypeInfo(); - var properties = typeInfo.DeclaredProperties.Where(IsValidProperty); + var properties = type.GetRuntimeProperties().Where(IsValidProperty); var attributeDescriptors = properties.Select(ToAttributeDescriptor); return attributeDescriptors; diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/TagHelperDescriptorFactoryTest.cs b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/TagHelperDescriptorFactoryTest.cs index 8aee286fd6..0338609ece 100644 --- a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/TagHelperDescriptorFactoryTest.cs +++ b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/TagHelperDescriptorFactoryTest.cs @@ -22,6 +22,28 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers Assert.Equal(descriptor, expectedDescriptor, CompleteTagHelperDescriptorComparer.Default); } + [Fact] + public void CreateDescriptor_BuildsDescriptorsWithInheritedProperties() + { + // Arrange + var intProperty = typeof(InheritedSingleAttributeTagHelper).GetProperty( + nameof(InheritedSingleAttributeTagHelper.IntAttribute)); + var expectedDescriptor = new TagHelperDescriptor( + "InheritedSingleAttribute", + typeof(InheritedSingleAttributeTagHelper).FullName, + ContentBehavior.None, + new[] { + new TagHelperAttributeDescriptor(nameof(InheritedSingleAttributeTagHelper.IntAttribute), intProperty) + }); + + // Act + var descriptors = TagHelperDescriptorFactory.CreateDescriptors(typeof(InheritedSingleAttributeTagHelper)); + + // Assert + var descriptor = Assert.Single(descriptors); + Assert.Equal(descriptor, expectedDescriptor, CompleteTagHelperDescriptorComparer.Default); + } + [Fact] public void CreateDescriptor_BuildsDescriptorsWithConventionNames() { @@ -257,5 +279,9 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers private class MultipleAttributeTagHelper { } + + private class InheritedSingleAttributeTagHelper : SingleAttributeTagHelper + { + } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/project.json b/test/Microsoft.AspNet.Razor.Runtime.Test/project.json index 13e115d4fe..0958298943 100644 --- a/test/Microsoft.AspNet.Razor.Runtime.Test/project.json +++ b/test/Microsoft.AspNet.Razor.Runtime.Test/project.json @@ -8,6 +8,6 @@ "test": "Xunit.KRunner" }, "frameworks": { - "net45": { } + "aspnet50": { } } }