Fix TagHelperDescriptor.Kind serialization

This commit is contained in:
Ajay Bhargav Baaskaran 2018-03-12 15:31:12 -07:00
parent a9004e503e
commit fcd4484542
2 changed files with 51 additions and 3 deletions

View File

@ -39,7 +39,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.Serialization
var diagnostics = descriptor[nameof(TagHelperDescriptor.Diagnostics)].Value<JArray>();
var metadata = descriptor[nameof(TagHelperDescriptor.Metadata)].Value<JObject>();
var builder = TagHelperDescriptorBuilder.Create(typeName, assemblyName);
var builder = TagHelperDescriptorBuilder.Create(descriptorKind, typeName, assemblyName);
builder.Documentation = documentation;
builder.TagOutputHint = tagOutputHint;

View File

@ -3,8 +3,8 @@
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Razor.Extensions;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.AspNetCore.Razor.Language.Legacy;
using Microsoft.VisualStudio.LanguageServices.Razor.Serialization;
using Newtonsoft.Json;
using Xunit;
@ -18,6 +18,51 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
{
// Arrange
var expectedDescriptor = CreateTagHelperDescriptor(
kind: TagHelperConventions.DefaultKind,
tagName: "tag-name",
typeName: "type name",
assemblyName: "assembly name",
attributes: new Action<BoundAttributeDescriptorBuilder>[]
{
builder => builder
.Name("test-attribute")
.PropertyName("TestAttribute")
.TypeName("string"),
},
ruleBuilders: new Action<TagMatchingRuleDescriptorBuilder>[]
{
builder => builder
.RequireAttributeDescriptor(attribute => attribute
.Name("required-attribute-one")
.NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch))
.RequireAttributeDescriptor(attribute => attribute
.Name("required-attribute-two")
.NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch)
.Value("something")
.ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode.PrefixMatch))
.RequireParentTag("parent-name")
.RequireTagStructure(TagStructure.WithoutEndTag),
},
configureAction: builder =>
{
builder.AllowChildTag("allowed-child-one");
builder.AddMetadata("foo", "bar");
});
// Act
var serializedDescriptor = JsonConvert.SerializeObject(expectedDescriptor, TagHelperDescriptorJsonConverter.Instance, RazorDiagnosticJsonConverter.Instance);
var descriptor = JsonConvert.DeserializeObject<TagHelperDescriptor>(serializedDescriptor, TagHelperDescriptorJsonConverter.Instance, RazorDiagnosticJsonConverter.Instance);
// Assert
Assert.Equal(expectedDescriptor, descriptor, TagHelperDescriptorComparer.Default);
}
[Fact]
public void ViewComponentTagHelperDescriptor_RoundTripsProperly()
{
// Arrange
var expectedDescriptor = CreateTagHelperDescriptor(
kind: ViewComponentTagHelperConventions.Kind,
tagName: "tag-name",
typeName: "type name",
assemblyName: "assembly name",
@ -61,6 +106,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
{
// Arrange
var expectedDescriptor = CreateTagHelperDescriptor(
kind: TagHelperConventions.DefaultKind,
tagName: "tag-name",
typeName: "type name",
assemblyName: "assembly name",
@ -105,6 +151,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
{
// Arrange
var expectedDescriptor = CreateTagHelperDescriptor(
kind: TagHelperConventions.DefaultKind,
tagName: "tag-name",
typeName: "type name",
assemblyName: "assembly name",
@ -146,6 +193,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
}
private static TagHelperDescriptor CreateTagHelperDescriptor(
string kind,
string tagName,
string typeName,
string assemblyName,
@ -153,7 +201,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
IEnumerable<Action<TagMatchingRuleDescriptorBuilder>> ruleBuilders = null,
Action<TagHelperDescriptorBuilder> configureAction = null)
{
var builder = TagHelperDescriptorBuilder.Create(typeName, assemblyName);
var builder = TagHelperDescriptorBuilder.Create(kind, typeName, assemblyName);
builder.SetTypeName(typeName);
if (attributes != null)