1
1
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
2
2
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3
3
4
+ using System ;
4
5
using System . Reflection ;
5
6
using Microsoft . AspNet . Razor . TagHelpers ;
6
7
using Xunit ;
@@ -12,6 +13,41 @@ public class TagHelperDescriptorFactoryTest
12
13
private static readonly string AssemblyName =
13
14
typeof ( TagHelperDescriptorFactoryTest ) . GetTypeInfo ( ) . Assembly . GetName ( ) . Name ;
14
15
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
+
15
51
[ Fact ]
16
52
public void CreateDescriptor_OverridesAttributeNameFromAttribute ( )
17
53
{
@@ -22,7 +58,7 @@ public void CreateDescriptor_OverridesAttributeNameFromAttribute()
22
58
nameof ( OverriddenAttributeTagHelper . ValidAttribute2 ) ) ;
23
59
var expectedDescriptors = new [ ] {
24
60
new TagHelperDescriptor (
25
- "OverriddenAttribute " ,
61
+ "overridden-attribute " ,
26
62
typeof ( OverriddenAttributeTagHelper ) . FullName ,
27
63
AssemblyName ,
28
64
ContentBehavior . None ,
@@ -49,12 +85,12 @@ public void CreateDescriptor_DoesNotInheritOverridenAttributeName()
49
85
nameof ( InheritedOverriddenAttributeTagHelper . ValidAttribute2 ) ) ;
50
86
var expectedDescriptors = new [ ] {
51
87
new TagHelperDescriptor (
52
- "InheritedOverriddenAttribute " ,
88
+ "inherited-overridden-attribute " ,
53
89
typeof ( InheritedOverriddenAttributeTagHelper ) . FullName ,
54
90
AssemblyName ,
55
91
ContentBehavior . None ,
56
92
new [ ] {
57
- new TagHelperAttributeDescriptor ( nameof ( InheritedOverriddenAttributeTagHelper . ValidAttribute1 ) ,
93
+ new TagHelperAttributeDescriptor ( "valid-attribute1" ,
58
94
validProperty1 ) ,
59
95
new TagHelperAttributeDescriptor ( "Something-Else" , validProperty2 )
60
96
} )
@@ -77,7 +113,7 @@ public void CreateDescriptor_AllowsOverridenAttributeNameOnUnimplementedVirtual(
77
113
nameof ( InheritedNotOverriddenAttributeTagHelper . ValidAttribute2 ) ) ;
78
114
var expectedDescriptors = new [ ] {
79
115
new TagHelperDescriptor (
80
- "InheritedNotOverriddenAttribute " ,
116
+ "inherited-not-overridden-attribute " ,
81
117
typeof ( InheritedNotOverriddenAttributeTagHelper ) . FullName ,
82
118
AssemblyName ,
83
119
ContentBehavior . None ,
@@ -100,7 +136,7 @@ public void CreateDescriptor_BuildsDescriptorsFromSimpleTypes()
100
136
// Arrange
101
137
var objectAssemblyName = typeof ( object ) . GetTypeInfo ( ) . Assembly . GetName ( ) . Name ;
102
138
var expectedDescriptor =
103
- new TagHelperDescriptor ( "Object " , "System.Object" , objectAssemblyName , ContentBehavior . None ) ;
139
+ new TagHelperDescriptor ( "object " , "System.Object" , objectAssemblyName , ContentBehavior . None ) ;
104
140
105
141
// Act
106
142
var descriptors = TagHelperDescriptorFactory . CreateDescriptors ( typeof ( object ) ) ;
@@ -117,12 +153,12 @@ public void CreateDescriptor_BuildsDescriptorsWithInheritedProperties()
117
153
var intProperty = typeof ( InheritedSingleAttributeTagHelper ) . GetProperty (
118
154
nameof ( InheritedSingleAttributeTagHelper . IntAttribute ) ) ;
119
155
var expectedDescriptor = new TagHelperDescriptor (
120
- "InheritedSingleAttribute " ,
156
+ "inherited-single-attribute " ,
121
157
typeof ( InheritedSingleAttributeTagHelper ) . FullName ,
122
158
AssemblyName ,
123
159
ContentBehavior . None ,
124
160
new [ ] {
125
- new TagHelperAttributeDescriptor ( nameof ( InheritedSingleAttributeTagHelper . IntAttribute ) , intProperty )
161
+ new TagHelperAttributeDescriptor ( "int-attribute" , intProperty )
126
162
} ) ;
127
163
128
164
// Act
@@ -139,12 +175,12 @@ public void CreateDescriptor_BuildsDescriptorsWithConventionNames()
139
175
// Arrange
140
176
var intProperty = typeof ( SingleAttributeTagHelper ) . GetProperty ( nameof ( SingleAttributeTagHelper . IntAttribute ) ) ;
141
177
var expectedDescriptor = new TagHelperDescriptor (
142
- "SingleAttribute " ,
178
+ "single-attribute " ,
143
179
typeof ( SingleAttributeTagHelper ) . FullName ,
144
180
AssemblyName ,
145
181
ContentBehavior . None ,
146
182
new [ ] {
147
- new TagHelperAttributeDescriptor ( nameof ( SingleAttributeTagHelper . IntAttribute ) , intProperty )
183
+ new TagHelperAttributeDescriptor ( "int-attribute" , intProperty )
148
184
} ) ;
149
185
150
186
// Act
@@ -162,12 +198,12 @@ public void CreateDescriptor_OnlyAcceptsPropertiesWithGetAndSet()
162
198
var validProperty = typeof ( MissingAccessorTagHelper ) . GetProperty (
163
199
nameof ( MissingAccessorTagHelper . ValidAttribute ) ) ;
164
200
var expectedDescriptor = new TagHelperDescriptor (
165
- "MissingAccessor " ,
201
+ "missing-accessor " ,
166
202
typeof ( MissingAccessorTagHelper ) . FullName ,
167
203
AssemblyName ,
168
204
ContentBehavior . None ,
169
205
new [ ] {
170
- new TagHelperAttributeDescriptor ( nameof ( MissingAccessorTagHelper . ValidAttribute ) , validProperty )
206
+ new TagHelperAttributeDescriptor ( "valid-attribute" , validProperty )
171
207
} ) ;
172
208
173
209
// Act
@@ -185,13 +221,13 @@ public void CreateDescriptor_OnlyAcceptsPropertiesWithPublicGetAndSet()
185
221
var validProperty = typeof ( PrivateAccessorTagHelper ) . GetProperty (
186
222
nameof ( PrivateAccessorTagHelper . ValidAttribute ) ) ;
187
223
var expectedDescriptor = new TagHelperDescriptor (
188
- "PrivateAccessor " ,
224
+ "private-accessor " ,
189
225
typeof ( PrivateAccessorTagHelper ) . FullName ,
190
226
AssemblyName ,
191
227
ContentBehavior . None ,
192
228
new [ ] {
193
229
new TagHelperAttributeDescriptor (
194
- nameof ( PrivateAccessorTagHelper . ValidAttribute ) , validProperty )
230
+ "valid-attribute" , validProperty )
195
231
} ) ;
196
232
197
233
// Act
@@ -207,7 +243,7 @@ public void CreateDescriptor_ResolvesCustomContentBehavior()
207
243
{
208
244
// Arrange
209
245
var expectedDescriptor = new TagHelperDescriptor (
210
- "CustomContentBehavior " ,
246
+ "custom-content-behavior " ,
211
247
typeof ( CustomContentBehaviorTagHelper ) . FullName ,
212
248
AssemblyName ,
213
249
ContentBehavior . Append ) ;
@@ -225,7 +261,7 @@ public void CreateDescriptor_DoesNotResolveInheritedCustomContentBehavior()
225
261
{
226
262
// Arrange
227
263
var expectedDescriptor = new TagHelperDescriptor (
228
- "InheritedCustomContentBehavior " ,
264
+ "inherited-custom-content-behavior " ,
229
265
typeof ( InheritedCustomContentBehaviorTagHelper ) . FullName ,
230
266
AssemblyName ,
231
267
ContentBehavior . None ) ;
@@ -251,15 +287,15 @@ public void CreateDescriptor_ResolvesMultipleTagHelperDescriptorsFromSingleType(
251
287
AssemblyName ,
252
288
ContentBehavior . None ,
253
289
new [ ] {
254
- new TagHelperAttributeDescriptor ( nameof ( MultiTagTagHelper . ValidAttribute ) , validProp )
290
+ new TagHelperAttributeDescriptor ( "valid-attribute" , validProp )
255
291
} ) ,
256
292
new TagHelperDescriptor (
257
293
"p" ,
258
294
typeof ( MultiTagTagHelper ) . FullName ,
259
295
AssemblyName ,
260
296
ContentBehavior . None ,
261
297
new [ ] {
262
- new TagHelperAttributeDescriptor ( nameof ( MultiTagTagHelper . ValidAttribute ) , validProp )
298
+ new TagHelperAttributeDescriptor ( "valid-attribute" , validProp )
263
299
} )
264
300
} ;
265
301
@@ -276,12 +312,12 @@ public void CreateDescriptor_DoesntResolveInheritedTagNames()
276
312
// Arrange
277
313
var validProp = typeof ( InheritedMultiTagTagHelper ) . GetProperty ( nameof ( InheritedMultiTagTagHelper . ValidAttribute ) ) ;
278
314
var expectedDescriptor = new TagHelperDescriptor (
279
- "InheritedMultiTag " ,
315
+ "inherited-multi-tag " ,
280
316
typeof ( InheritedMultiTagTagHelper ) . FullName ,
281
317
AssemblyName ,
282
318
ContentBehavior . None ,
283
319
new [ ] {
284
- new TagHelperAttributeDescriptor ( nameof ( InheritedMultiTagTagHelper . ValidAttribute ) , validProp )
320
+ new TagHelperAttributeDescriptor ( "valid-attribute" , validProp )
285
321
} ) ;
286
322
287
323
// Act
@@ -419,5 +455,35 @@ private class InheritedOverriddenAttributeTagHelper : OverriddenAttributeTagHelp
419
455
private class InheritedNotOverriddenAttributeTagHelper : OverriddenAttributeTagHelper
420
456
{
421
457
}
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
+ }
422
488
}
423
489
}
0 commit comments