Modify tests to account for new tag and attribute names for TagHelpers.

- Also added additional tests to validate new lower kebab casing.

#240
This commit is contained in:
N. Taylor Mullen 2014-12-23 11:57:39 -08:00 committed by NTaylorMullen
parent 2ad828f5bc
commit 8c47f6a67e
3 changed files with 103 additions and 27 deletions

View File

@ -1,6 +1,7 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.Razor.TagHelpers;
@ -20,6 +21,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
bool IEqualityComparer<TagHelperDescriptor>.Equals(TagHelperDescriptor descriptorX, TagHelperDescriptor descriptorY)
{
return base.Equals(descriptorX, descriptorY) &&
// Tests should be exact casing
string.Equals(descriptorX.TagName, descriptorY.TagName, StringComparison.Ordinal) &&
descriptorX.Attributes.SequenceEqual(descriptorY.Attributes,
CompleteTagHelperAttributeDescriptorComparer.Default);
}
@ -43,17 +46,17 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
public bool Equals(TagHelperAttributeDescriptor descriptorX, TagHelperAttributeDescriptor descriptorY)
{
return descriptorX.Name == descriptorY.Name &&
descriptorX.PropertyName == descriptorY.PropertyName &&
descriptorX.TypeName == descriptorY.TypeName;
return string.Equals(descriptorX.Name, descriptorY.Name, StringComparison.Ordinal) &&
string.Equals(descriptorX.PropertyName, descriptorY.PropertyName, StringComparison.Ordinal) &&
string.Equals(descriptorX.TypeName, descriptorY.TypeName, StringComparison.Ordinal);
}
public int GetHashCode(TagHelperAttributeDescriptor descriptor)
{
return HashCodeCombiner.Start()
.Add(descriptor.Name)
.Add(descriptor.PropertyName)
.Add(descriptor.TypeName)
.Add(descriptor.Name, StringComparer.Ordinal)
.Add(descriptor.PropertyName, StringComparer.Ordinal)
.Add(descriptor.TypeName, StringComparer.Ordinal)
.CombinedHash;
}
}

View File

@ -1,6 +1,7 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Reflection;
using Microsoft.AspNet.Razor.TagHelpers;
using Xunit;
@ -12,6 +13,42 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
private static readonly string AssemblyName =
typeof(TagHelperDescriptorFactoryTest).GetTypeInfo().Assembly.GetName().Name;
public static TheoryData HtmlCaseData
{
get
{
// tagHelperType, expectedTagName, expectedAttributeName
return new TheoryData<Type, string, string>
{
{ typeof(SingleAttributeTagHelper), "single-attribute", "int-attribute" },
{ typeof(ALLCAPSTAGHELPER), "allcaps", "allcapsattribute" },
{ typeof(CAPSOnOUTSIDETagHelper), "caps-on-outside", "caps-on-outsideattribute" },
{ typeof(capsONInsideTagHelper), "caps-on-inside", "caps-on-insideattribute" },
{ typeof(One1Two2Three3TagHelper), "one1-two2-three3", "one1-two2-three3-attribute" },
{ typeof(ONE1TWO2THREE3TagHelper), "one1two2three3", "one1two2three3-attribute" },
{ typeof(First_Second_ThirdHiTagHelper), "first_second_third-hi", "first_second_third-attribute" },
{ typeof(UNSuffixedCLASS), "un-suffixed-class", "un-suffixed-attribute" },
};
}
}
[Theory]
[MemberData(nameof(HtmlCaseData))]
public void CreateDescriptor_HtmlCasesTagNameAndAttributeName(
Type tagHelperType,
string expectedTagName,
string expectedAttributeName)
{
// Arrange & Act
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(tagHelperType);
// Assert
var descriptor = Assert.Single(descriptors);
Assert.Equal(expectedTagName, descriptor.TagName, StringComparer.Ordinal);
var attributeDescriptor = Assert.Single(descriptor.Attributes);
Assert.Equal(expectedAttributeName, attributeDescriptor.Name);
}
[Fact]
public void CreateDescriptor_OverridesAttributeNameFromAttribute()
{
@ -22,7 +59,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
nameof(OverriddenAttributeTagHelper.ValidAttribute2));
var expectedDescriptors = new[] {
new TagHelperDescriptor(
"OverriddenAttribute",
"overridden-attribute",
typeof(OverriddenAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
@ -49,12 +86,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
nameof(InheritedOverriddenAttributeTagHelper.ValidAttribute2));
var expectedDescriptors = new[] {
new TagHelperDescriptor(
"InheritedOverriddenAttribute",
"inherited-overridden-attribute",
typeof(InheritedOverriddenAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(InheritedOverriddenAttributeTagHelper.ValidAttribute1),
new TagHelperAttributeDescriptor("valid-attribute1",
validProperty1),
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
})
@ -77,7 +114,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
nameof(InheritedNotOverriddenAttributeTagHelper.ValidAttribute2));
var expectedDescriptors = new[] {
new TagHelperDescriptor(
"InheritedNotOverriddenAttribute",
"inherited-not-overridden-attribute",
typeof(InheritedNotOverriddenAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
@ -100,7 +137,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// Arrange
var objectAssemblyName = typeof(object).GetTypeInfo().Assembly.GetName().Name;
var expectedDescriptor =
new TagHelperDescriptor("Object", "System.Object", objectAssemblyName, ContentBehavior.None);
new TagHelperDescriptor("object", "System.Object", objectAssemblyName, ContentBehavior.None);
// Act
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(typeof(object));
@ -117,12 +154,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var intProperty = typeof(InheritedSingleAttributeTagHelper).GetProperty(
nameof(InheritedSingleAttributeTagHelper.IntAttribute));
var expectedDescriptor = new TagHelperDescriptor(
"InheritedSingleAttribute",
"inherited-single-attribute",
typeof(InheritedSingleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(InheritedSingleAttributeTagHelper.IntAttribute), intProperty)
new TagHelperAttributeDescriptor("int-attribute", intProperty)
});
// Act
@ -139,12 +176,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// Arrange
var intProperty = typeof(SingleAttributeTagHelper).GetProperty(nameof(SingleAttributeTagHelper.IntAttribute));
var expectedDescriptor = new TagHelperDescriptor(
"SingleAttribute",
"single-attribute",
typeof(SingleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(SingleAttributeTagHelper.IntAttribute), intProperty)
new TagHelperAttributeDescriptor("int-attribute", intProperty)
});
// Act
@ -162,12 +199,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var validProperty = typeof(MissingAccessorTagHelper).GetProperty(
nameof(MissingAccessorTagHelper.ValidAttribute));
var expectedDescriptor = new TagHelperDescriptor(
"MissingAccessor",
"missing-accessor",
typeof(MissingAccessorTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(MissingAccessorTagHelper.ValidAttribute), validProperty)
new TagHelperAttributeDescriptor("valid-attribute", validProperty)
});
// Act
@ -185,13 +222,13 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var validProperty = typeof(PrivateAccessorTagHelper).GetProperty(
nameof(PrivateAccessorTagHelper.ValidAttribute));
var expectedDescriptor = new TagHelperDescriptor(
"PrivateAccessor",
"private-accessor",
typeof(PrivateAccessorTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(
nameof(PrivateAccessorTagHelper.ValidAttribute), validProperty)
"valid-attribute", validProperty)
});
// Act
@ -207,7 +244,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
// Arrange
var expectedDescriptor = new TagHelperDescriptor(
"CustomContentBehavior",
"custom-content-behavior",
typeof(CustomContentBehaviorTagHelper).FullName,
AssemblyName,
ContentBehavior.Append);
@ -225,7 +262,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
// Arrange
var expectedDescriptor = new TagHelperDescriptor(
"InheritedCustomContentBehavior",
"inherited-custom-content-behavior",
typeof(InheritedCustomContentBehaviorTagHelper).FullName,
AssemblyName,
ContentBehavior.None);
@ -251,7 +288,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(MultiTagTagHelper.ValidAttribute), validProp)
new TagHelperAttributeDescriptor("valid-attribute", validProp)
}),
new TagHelperDescriptor(
"p",
@ -259,7 +296,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(MultiTagTagHelper.ValidAttribute), validProp)
new TagHelperAttributeDescriptor("valid-attribute", validProp)
})
};
@ -276,12 +313,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// Arrange
var validProp = typeof(InheritedMultiTagTagHelper).GetProperty(nameof(InheritedMultiTagTagHelper.ValidAttribute));
var expectedDescriptor = new TagHelperDescriptor(
"InheritedMultiTag",
"inherited-multi-tag",
typeof(InheritedMultiTagTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(nameof(InheritedMultiTagTagHelper.ValidAttribute), validProp)
new TagHelperAttributeDescriptor("valid-attribute", validProp)
});
// Act
@ -419,5 +456,41 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
private class InheritedNotOverriddenAttributeTagHelper : OverriddenAttributeTagHelper
{
}
private class ALLCAPSTAGHELPER : TagHelper
{
public int ALLCAPSATTRIBUTE { get; set; }
}
private class CAPSOnOUTSIDETagHelper : TagHelper
{
public int CAPSOnOUTSIDEATTRIBUTE { get; set; }
}
private class capsONInsideTagHelper : TagHelper
{
public int capsONInsideattribute { get; set; }
}
private class One1Two2Three3TagHelper : TagHelper
{
public int One1Two2Three3Attribute { get; set; }
}
private class ONE1TWO2THREE3TagHelper : TagHelper
{
public int ONE1TWO2THREE3Attribute { get; set; }
}
private class First_Second_ThirdHiTagHelper : TagHelper
{
public int First_Second_ThirdAttribute { get; set; }
}
private class UNSuffixedCLASS : TagHelper
{
public int UNSuffixedATTRIBUTE { get; set; }
}
}
}

View File

@ -25,7 +25,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
get
{
return new TagHelperDescriptor("Valid_Plain",
return new TagHelperDescriptor("valid_plain",
Valid_PlainTagHelperType.FullName,
AssemblyName,
ContentBehavior.None);
@ -36,7 +36,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
get
{
return new TagHelperDescriptor("Valid_Inherited",
return new TagHelperDescriptor("valid_inherited",
Valid_InheritedTagHelperType.FullName,
AssemblyName,
ContentBehavior.None);