Make ViewComponentTagHelper's display name nicer.
- Went from `__Generated__SomeViewComponentTagHelper` to `SomeViewComponentTagHelper`. - Updated `TagHelperDescriptorBuilder` to allow setting of `DisplayName`. - Added `TagHelperDescriptorBuilderTest` class to verify new `DisplayName` additions. - Updated `ViewComponentTagHelperDescriptorFactoryTest` expectations. #1251
This commit is contained in:
parent
03f3975360
commit
4c98b7f8f3
|
|
@ -16,6 +16,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
private static ICollection<char> InvalidNonWhitespaceAllowedChildCharacters { get; } = new HashSet<char>(
|
private static ICollection<char> InvalidNonWhitespaceAllowedChildCharacters { get; } = new HashSet<char>(
|
||||||
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
|
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
|
||||||
|
|
||||||
|
private string _displayName;
|
||||||
private string _documentation;
|
private string _documentation;
|
||||||
private string _tagOutputHint;
|
private string _tagOutputHint;
|
||||||
private HashSet<string> _allowedChildTags;
|
private HashSet<string> _allowedChildTags;
|
||||||
|
|
@ -29,6 +30,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
private TagHelperDescriptorBuilder(string typeName, string assemblyName)
|
private TagHelperDescriptorBuilder(string typeName, string assemblyName)
|
||||||
{
|
{
|
||||||
_typeName = typeName;
|
_typeName = typeName;
|
||||||
|
_displayName = _typeName;
|
||||||
_assemblyName = assemblyName;
|
_assemblyName = assemblyName;
|
||||||
_metadata = new Dictionary<string, string>(StringComparer.Ordinal);
|
_metadata = new Dictionary<string, string>(StringComparer.Ordinal);
|
||||||
}
|
}
|
||||||
|
|
@ -133,6 +135,18 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TagHelperDescriptorBuilder DisplayName(string displayName)
|
||||||
|
{
|
||||||
|
if (displayName == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(displayName));
|
||||||
|
}
|
||||||
|
|
||||||
|
_displayName = displayName;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public TagHelperDescriptor Build()
|
public TagHelperDescriptor Build()
|
||||||
{
|
{
|
||||||
var validationDiagnostics = Validate();
|
var validationDiagnostics = Validate();
|
||||||
|
|
@ -146,7 +160,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
_typeName,
|
_typeName,
|
||||||
_assemblyName,
|
_assemblyName,
|
||||||
_typeName /* Name */,
|
_typeName /* Name */,
|
||||||
_typeName /* DisplayName */,
|
_displayName,
|
||||||
_documentation,
|
_documentation,
|
||||||
_tagOutputHint,
|
_tagOutputHint,
|
||||||
_tagMatchingRules ?? Enumerable.Empty<TagMatchingRule>(),
|
_tagMatchingRules ?? Enumerable.Empty<TagMatchingRule>(),
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,11 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
var shortName = GetShortName(type);
|
var shortName = GetShortName(type);
|
||||||
var tagName = $"vc:{DefaultTagHelperDescriptorFactory.ToHtmlCase(shortName)}";
|
var tagName = $"vc:{DefaultTagHelperDescriptorFactory.ToHtmlCase(shortName)}";
|
||||||
var typeName = $"__Generated__{shortName}ViewComponentTagHelper";
|
var typeName = $"__Generated__{shortName}ViewComponentTagHelper";
|
||||||
var descriptorBuilder = TagHelperDescriptorBuilder.Create(typeName, assemblyName);
|
var displayName = shortName + "ViewComponentTagHelper";
|
||||||
var methodParameters = GetInvokeMethodParameters(type);
|
var methodParameters = GetInvokeMethodParameters(type);
|
||||||
descriptorBuilder.TagMatchingRule(ruleBuilder =>
|
var descriptorBuilder = TagHelperDescriptorBuilder.Create(typeName, assemblyName)
|
||||||
|
.DisplayName(displayName)
|
||||||
|
.TagMatchingRule(ruleBuilder =>
|
||||||
{
|
{
|
||||||
ruleBuilder.RequireTagName(tagName);
|
ruleBuilder.RequireTagName(tagName);
|
||||||
AddRequiredAttributes(methodParameters, ruleBuilder);
|
AddRequiredAttributes(methodParameters, ruleBuilder);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Razor.Language
|
||||||
|
{
|
||||||
|
public class TagHelperDescriptorBuilderTest
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void DisplayName_SetsDescriptorsDisplayName()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var expectedDisplayName = "ExpectedDisplayName";
|
||||||
|
var builder = TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var descriptor = builder.DisplayName(expectedDisplayName).Build();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(expectedDisplayName, descriptor.DisplayName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void DisplayName_DefaultsToTypeName()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var expectedDisplayName = "TestTagHelper";
|
||||||
|
var builder = TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var descriptor = builder.Build();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(expectedDisplayName, descriptor.DisplayName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using Microsoft.AspNetCore.Razor.Language.Legacy;
|
|
||||||
|
|
||||||
namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
{
|
{
|
||||||
|
|
@ -21,6 +20,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
||||||
"__Generated__StringParameterViewComponentTagHelper",
|
"__Generated__StringParameterViewComponentTagHelper",
|
||||||
typeof(StringParameterViewComponent).GetTypeInfo().Assembly.GetName().Name)
|
typeof(StringParameterViewComponent).GetTypeInfo().Assembly.GetName().Name)
|
||||||
|
.DisplayName("StringParameterViewComponentTagHelper")
|
||||||
.TagMatchingRule(rule =>
|
.TagMatchingRule(rule =>
|
||||||
rule
|
rule
|
||||||
.RequireTagName("vc:string-parameter")
|
.RequireTagName("vc:string-parameter")
|
||||||
|
|
@ -56,6 +56,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
||||||
"__Generated__VariousParameterViewComponentTagHelper",
|
"__Generated__VariousParameterViewComponentTagHelper",
|
||||||
typeof(VariousParameterViewComponent).GetTypeInfo().Assembly.GetName().Name)
|
typeof(VariousParameterViewComponent).GetTypeInfo().Assembly.GetName().Name)
|
||||||
|
.DisplayName("VariousParameterViewComponentTagHelper")
|
||||||
.TagMatchingRule(rule =>
|
.TagMatchingRule(rule =>
|
||||||
rule
|
rule
|
||||||
.RequireTagName("vc:various-parameter")
|
.RequireTagName("vc:various-parameter")
|
||||||
|
|
@ -98,6 +99,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
||||||
"__Generated__GenericParameterViewComponentTagHelper",
|
"__Generated__GenericParameterViewComponentTagHelper",
|
||||||
typeof(GenericParameterViewComponent).GetTypeInfo().Assembly.GetName().Name)
|
typeof(GenericParameterViewComponent).GetTypeInfo().Assembly.GetName().Name)
|
||||||
|
.DisplayName("GenericParameterViewComponentTagHelper")
|
||||||
.TagMatchingRule(rule =>
|
.TagMatchingRule(rule =>
|
||||||
rule
|
rule
|
||||||
.RequireTagName("vc:generic-parameter")
|
.RequireTagName("vc:generic-parameter")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue