Skip to content
This repository was archived by the owner on Dec 19, 2018. It is now read-only.

Commit e35af47

Browse files
author
N. Taylor Mullen
committed
Modify tests to account for new tag and attribute names for TagHelpers.
- Also added additional tests to validate new lower snake casing. #240
1 parent 1461579 commit e35af47

File tree

3 files changed

+96
-27
lines changed

3 files changed

+96
-27
lines changed

test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/CompleteTagHelperDescriptorComparer.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4+
using System;
45
using System.Collections.Generic;
56
using System.Linq;
67
using Microsoft.AspNet.Razor.TagHelpers;
@@ -20,6 +21,8 @@ private CompleteTagHelperDescriptorComparer()
2021
bool IEqualityComparer<TagHelperDescriptor>.Equals(TagHelperDescriptor descriptorX, TagHelperDescriptor descriptorY)
2122
{
2223
return base.Equals(descriptorX, descriptorY) &&
24+
// Tests should be exact casing
25+
string.Equals(descriptorX.TagName, descriptorY.TagName, StringComparison.Ordinal) &&
2326
descriptorX.Attributes.SequenceEqual(descriptorY.Attributes,
2427
CompleteTagHelperAttributeDescriptorComparer.Default);
2528
}
@@ -43,17 +46,17 @@ private CompleteTagHelperAttributeDescriptorComparer()
4346

4447
public bool Equals(TagHelperAttributeDescriptor descriptorX, TagHelperAttributeDescriptor descriptorY)
4548
{
46-
return descriptorX.Name == descriptorY.Name &&
47-
descriptorX.PropertyName == descriptorY.PropertyName &&
48-
descriptorX.TypeName == descriptorY.TypeName;
49+
return string.Equals(descriptorX.Name, descriptorY.Name, StringComparison.Ordinal) &&
50+
string.Equals(descriptorX.PropertyName, descriptorY.PropertyName, StringComparison.Ordinal) &&
51+
string.Equals(descriptorX.TypeName, descriptorY.TypeName, StringComparison.Ordinal);
4952
}
5053

5154
public int GetHashCode(TagHelperAttributeDescriptor descriptor)
5255
{
5356
return HashCodeCombiner.Start()
54-
.Add(descriptor.Name)
55-
.Add(descriptor.PropertyName)
56-
.Add(descriptor.TypeName)
57+
.Add(descriptor.Name, StringComparer.Ordinal)
58+
.Add(descriptor.PropertyName, StringComparer.Ordinal)
59+
.Add(descriptor.TypeName, StringComparer.Ordinal)
5760
.CombinedHash;
5861
}
5962
}

test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/TagHelperDescriptorFactoryTest.cs

Lines changed: 85 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4+
using System;
45
using System.Reflection;
56
using Microsoft.AspNet.Razor.TagHelpers;
67
using Xunit;
@@ -12,6 +13,41 @@ public class TagHelperDescriptorFactoryTest
1213
private static readonly string AssemblyName =
1314
typeof(TagHelperDescriptorFactoryTest).GetTypeInfo().Assembly.GetName().Name;
1415

16+
public static TheoryData SnakeCaseData
17+
{
18+
get
19+
{
20+
// tagHelperType, expectedTagName, expectedAttributeName
21+
return new TheoryData<Type, string, string>
22+
{
23+
{ typeof(SingleAttributeTagHelper), "single-attribute", "int-attribute" },
24+
{ typeof(ALLCAPSTAGHELPER), "allcaps", "allcapsattribute" },
25+
{ typeof(CAPSOnOUTSIDETagHelper), "caps-on-outside", "caps-on-outsideattribute" },
26+
{ typeof(capsONInsideTagHelper), "caps-on-inside", "caps-on-insideattribute" },
27+
{ typeof(One1Two2Three3TagHelper), "one1-two2-three3", "one1-two2-three3-attribute" },
28+
{ typeof(ONE1TWO2THREE3TagHelper), "one1two2three3", "one1two2three3-attribute" },
29+
{ typeof(First_Second_ThirdHiTagHelper), "first_second_third-hi", "first_second_third-attribute" },
30+
};
31+
}
32+
}
33+
34+
[Theory]
35+
[MemberData(nameof(SnakeCaseData))]
36+
public void CreateDescriptor_SnakeCasesTagNameAndAttributeName(
37+
Type tagHelperType,
38+
string expectedTagName,
39+
string expectedAttributeName)
40+
{
41+
// Arrange & Act
42+
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(tagHelperType);
43+
44+
// Assert
45+
var descriptor = Assert.Single(descriptors);
46+
Assert.Equal(expectedTagName, descriptor.TagName, StringComparer.Ordinal);
47+
var attributeDescriptor = Assert.Single(descriptor.Attributes);
48+
Assert.Equal(expectedAttributeName, attributeDescriptor.Name);
49+
}
50+
1551
[Fact]
1652
public void CreateDescriptor_OverridesAttributeNameFromAttribute()
1753
{
@@ -22,7 +58,7 @@ public void CreateDescriptor_OverridesAttributeNameFromAttribute()
2258
nameof(OverriddenAttributeTagHelper.ValidAttribute2));
2359
var expectedDescriptors = new[] {
2460
new TagHelperDescriptor(
25-
"OverriddenAttribute",
61+
"overridden-attribute",
2662
typeof(OverriddenAttributeTagHelper).FullName,
2763
AssemblyName,
2864
ContentBehavior.None,
@@ -49,12 +85,12 @@ public void CreateDescriptor_DoesNotInheritOverridenAttributeName()
4985
nameof(InheritedOverriddenAttributeTagHelper.ValidAttribute2));
5086
var expectedDescriptors = new[] {
5187
new TagHelperDescriptor(
52-
"InheritedOverriddenAttribute",
88+
"inherited-overridden-attribute",
5389
typeof(InheritedOverriddenAttributeTagHelper).FullName,
5490
AssemblyName,
5591
ContentBehavior.None,
5692
new[] {
57-
new TagHelperAttributeDescriptor(nameof(InheritedOverriddenAttributeTagHelper.ValidAttribute1),
93+
new TagHelperAttributeDescriptor("valid-attribute1",
5894
validProperty1),
5995
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
6096
})
@@ -77,7 +113,7 @@ public void CreateDescriptor_AllowsOverridenAttributeNameOnUnimplementedVirtual(
77113
nameof(InheritedNotOverriddenAttributeTagHelper.ValidAttribute2));
78114
var expectedDescriptors = new[] {
79115
new TagHelperDescriptor(
80-
"InheritedNotOverriddenAttribute",
116+
"inherited-not-overridden-attribute",
81117
typeof(InheritedNotOverriddenAttributeTagHelper).FullName,
82118
AssemblyName,
83119
ContentBehavior.None,
@@ -100,7 +136,7 @@ public void CreateDescriptor_BuildsDescriptorsFromSimpleTypes()
100136
// Arrange
101137
var objectAssemblyName = typeof(object).GetTypeInfo().Assembly.GetName().Name;
102138
var expectedDescriptor =
103-
new TagHelperDescriptor("Object", "System.Object", objectAssemblyName, ContentBehavior.None);
139+
new TagHelperDescriptor("object", "System.Object", objectAssemblyName, ContentBehavior.None);
104140

105141
// Act
106142
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(typeof(object));
@@ -117,12 +153,12 @@ public void CreateDescriptor_BuildsDescriptorsWithInheritedProperties()
117153
var intProperty = typeof(InheritedSingleAttributeTagHelper).GetProperty(
118154
nameof(InheritedSingleAttributeTagHelper.IntAttribute));
119155
var expectedDescriptor = new TagHelperDescriptor(
120-
"InheritedSingleAttribute",
156+
"inherited-single-attribute",
121157
typeof(InheritedSingleAttributeTagHelper).FullName,
122158
AssemblyName,
123159
ContentBehavior.None,
124160
new[] {
125-
new TagHelperAttributeDescriptor(nameof(InheritedSingleAttributeTagHelper.IntAttribute), intProperty)
161+
new TagHelperAttributeDescriptor("int-attribute", intProperty)
126162
});
127163

128164
// Act
@@ -139,12 +175,12 @@ public void CreateDescriptor_BuildsDescriptorsWithConventionNames()
139175
// Arrange
140176
var intProperty = typeof(SingleAttributeTagHelper).GetProperty(nameof(SingleAttributeTagHelper.IntAttribute));
141177
var expectedDescriptor = new TagHelperDescriptor(
142-
"SingleAttribute",
178+
"single-attribute",
143179
typeof(SingleAttributeTagHelper).FullName,
144180
AssemblyName,
145181
ContentBehavior.None,
146182
new[] {
147-
new TagHelperAttributeDescriptor(nameof(SingleAttributeTagHelper.IntAttribute), intProperty)
183+
new TagHelperAttributeDescriptor("int-attribute", intProperty)
148184
});
149185

150186
// Act
@@ -162,12 +198,12 @@ public void CreateDescriptor_OnlyAcceptsPropertiesWithGetAndSet()
162198
var validProperty = typeof(MissingAccessorTagHelper).GetProperty(
163199
nameof(MissingAccessorTagHelper.ValidAttribute));
164200
var expectedDescriptor = new TagHelperDescriptor(
165-
"MissingAccessor",
201+
"missing-accessor",
166202
typeof(MissingAccessorTagHelper).FullName,
167203
AssemblyName,
168204
ContentBehavior.None,
169205
new[] {
170-
new TagHelperAttributeDescriptor(nameof(MissingAccessorTagHelper.ValidAttribute), validProperty)
206+
new TagHelperAttributeDescriptor("valid-attribute", validProperty)
171207
});
172208

173209
// Act
@@ -185,13 +221,13 @@ public void CreateDescriptor_OnlyAcceptsPropertiesWithPublicGetAndSet()
185221
var validProperty = typeof(PrivateAccessorTagHelper).GetProperty(
186222
nameof(PrivateAccessorTagHelper.ValidAttribute));
187223
var expectedDescriptor = new TagHelperDescriptor(
188-
"PrivateAccessor",
224+
"private-accessor",
189225
typeof(PrivateAccessorTagHelper).FullName,
190226
AssemblyName,
191227
ContentBehavior.None,
192228
new[] {
193229
new TagHelperAttributeDescriptor(
194-
nameof(PrivateAccessorTagHelper.ValidAttribute), validProperty)
230+
"valid-attribute", validProperty)
195231
});
196232

197233
// Act
@@ -207,7 +243,7 @@ public void CreateDescriptor_ResolvesCustomContentBehavior()
207243
{
208244
// Arrange
209245
var expectedDescriptor = new TagHelperDescriptor(
210-
"CustomContentBehavior",
246+
"custom-content-behavior",
211247
typeof(CustomContentBehaviorTagHelper).FullName,
212248
AssemblyName,
213249
ContentBehavior.Append);
@@ -225,7 +261,7 @@ public void CreateDescriptor_DoesNotResolveInheritedCustomContentBehavior()
225261
{
226262
// Arrange
227263
var expectedDescriptor = new TagHelperDescriptor(
228-
"InheritedCustomContentBehavior",
264+
"inherited-custom-content-behavior",
229265
typeof(InheritedCustomContentBehaviorTagHelper).FullName,
230266
AssemblyName,
231267
ContentBehavior.None);
@@ -251,15 +287,15 @@ public void CreateDescriptor_ResolvesMultipleTagHelperDescriptorsFromSingleType(
251287
AssemblyName,
252288
ContentBehavior.None,
253289
new[] {
254-
new TagHelperAttributeDescriptor(nameof(MultiTagTagHelper.ValidAttribute), validProp)
290+
new TagHelperAttributeDescriptor("valid-attribute", validProp)
255291
}),
256292
new TagHelperDescriptor(
257293
"p",
258294
typeof(MultiTagTagHelper).FullName,
259295
AssemblyName,
260296
ContentBehavior.None,
261297
new[] {
262-
new TagHelperAttributeDescriptor(nameof(MultiTagTagHelper.ValidAttribute), validProp)
298+
new TagHelperAttributeDescriptor("valid-attribute", validProp)
263299
})
264300
};
265301

@@ -276,12 +312,12 @@ public void CreateDescriptor_DoesntResolveInheritedTagNames()
276312
// Arrange
277313
var validProp = typeof(InheritedMultiTagTagHelper).GetProperty(nameof(InheritedMultiTagTagHelper.ValidAttribute));
278314
var expectedDescriptor = new TagHelperDescriptor(
279-
"InheritedMultiTag",
315+
"inherited-multi-tag",
280316
typeof(InheritedMultiTagTagHelper).FullName,
281317
AssemblyName,
282318
ContentBehavior.None,
283319
new[] {
284-
new TagHelperAttributeDescriptor(nameof(InheritedMultiTagTagHelper.ValidAttribute), validProp)
320+
new TagHelperAttributeDescriptor("valid-attribute", validProp)
285321
});
286322

287323
// Act
@@ -419,5 +455,35 @@ private class InheritedOverriddenAttributeTagHelper : OverriddenAttributeTagHelp
419455
private class InheritedNotOverriddenAttributeTagHelper : OverriddenAttributeTagHelper
420456
{
421457
}
458+
459+
private class ALLCAPSTAGHELPER : TagHelper
460+
{
461+
public int ALLCAPSATTRIBUTE { get; set; }
462+
}
463+
464+
private class CAPSOnOUTSIDETagHelper : TagHelper
465+
{
466+
public int CAPSOnOUTSIDEATTRIBUTE { get; set; }
467+
}
468+
469+
private class capsONInsideTagHelper : TagHelper
470+
{
471+
public int capsONInsideattribute { get; set; }
472+
}
473+
474+
private class One1Two2Three3TagHelper : TagHelper
475+
{
476+
public int One1Two2Three3Attribute { get; set; }
477+
}
478+
479+
private class ONE1TWO2THREE3TagHelper : TagHelper
480+
{
481+
public int ONE1TWO2THREE3Attribute { get; set; }
482+
}
483+
484+
private class First_Second_ThirdHiTagHelper : TagHelper
485+
{
486+
public int First_Second_ThirdAttribute { get; set; }
487+
}
422488
}
423489
}

test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/TagHelperDescriptorResolverTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ private static TagHelperDescriptor Valid_PlainTagHelperDescriptor
2525
{
2626
get
2727
{
28-
return new TagHelperDescriptor("Valid_Plain",
28+
return new TagHelperDescriptor("valid_plain",
2929
Valid_PlainTagHelperType.FullName,
3030
AssemblyName,
3131
ContentBehavior.None);
@@ -36,7 +36,7 @@ private static TagHelperDescriptor Valid_InheritedTagHelperDescriptor
3636
{
3737
get
3838
{
39-
return new TagHelperDescriptor("Valid_Inherited",
39+
return new TagHelperDescriptor("valid_inherited",
4040
Valid_InheritedTagHelperType.FullName,
4141
AssemblyName,
4242
ContentBehavior.None);

0 commit comments

Comments
 (0)