@@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers
21
21
{
22
22
public class InputTagHelperTest
23
23
{
24
- public static TheoryData MultiAttributeCheckBoxData
24
+ public static TheoryData < TagHelperAttributeList , string > MultiAttributeCheckBoxData
25
25
{
26
26
get
27
27
{
@@ -386,10 +386,22 @@ public async Task ProcessAsync_GeneratesExpectedOutput(
386
386
Assert . Equal ( expectedTagName , output . TagName ) ;
387
387
}
388
388
389
+ public static TheoryData < string , string > Process_GeneratesFormattedOutputData
390
+ {
391
+ get
392
+ {
393
+ AppContext . TryGetSwitch ( InputTagHelper . UseDateTimeLocalTypeForDateTimeOffsetSwitch , out var enabled ) ;
394
+ return new TheoryData < string , string >
395
+ {
396
+ { "datetime" , "datetime" } ,
397
+ { null , enabled ? "datetime-local" : "text" } ,
398
+ { "hidden" , "hidden" } ,
399
+ } ;
400
+ }
401
+ }
402
+
389
403
[ Theory ]
390
- [ InlineData ( "datetime" , "datetime" ) ]
391
- [ InlineData ( null , "text" ) ]
392
- [ InlineData ( "hidden" , "hidden" ) ]
404
+ [ MemberData ( nameof ( Process_GeneratesFormattedOutputData ) ) ]
393
405
public void Process_GeneratesFormattedOutput ( string specifiedType , string expectedType )
394
406
{
395
407
// Arrange
@@ -1206,20 +1218,43 @@ public async Task ProcessAsync_CallsGenerateTextBox_InputTypeDateTime_RendersAsD
1206
1218
Assert . Equal ( expectedTagName , output . TagName ) ;
1207
1219
}
1208
1220
1221
+ public static TheoryData < string , Html5DateRenderingMode , string , string > ProcessAsync_CallsGenerateTextBox_AddsExpectedAttributesForRfc3339Data
1222
+ {
1223
+ get
1224
+ {
1225
+ AppContext . TryGetSwitch ( InputTagHelper . UseDateTimeLocalTypeForDateTimeOffsetSwitch , out var enabled ) ;
1226
+ var expectedK = enabled ? string . Empty : "K" ;
1227
+ return new TheoryData < string , Html5DateRenderingMode , string , string >
1228
+ {
1229
+ { "Date" , Html5DateRenderingMode . CurrentCulture , "{0:d}" , "date" } , // Format from [DataType].
1230
+ { "Date" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-dd}" , "date" } ,
1231
+ { "DateTime" , Html5DateRenderingMode . CurrentCulture , null , "datetime-local" } ,
1232
+ { "DateTime" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fff}" , "datetime-local" } ,
1233
+ { "DateTimeOffset" , Html5DateRenderingMode . CurrentCulture , null , enabled ? "datetime-local" : "text" } ,
1234
+ {
1235
+ "DateTimeOffset" ,
1236
+ Html5DateRenderingMode . Rfc3339 ,
1237
+ $ "{{0:yyyy-MM-ddTHH:mm:ss.fff{ expectedK } }}",
1238
+ enabled ? "datetime-local" : "text"
1239
+ } ,
1240
+ { "DateTimeLocal" , Html5DateRenderingMode . CurrentCulture , null , "datetime-local" } ,
1241
+ { "DateTimeLocal" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fff}" , "datetime-local" } ,
1242
+ { "Time" , Html5DateRenderingMode . CurrentCulture , "{0:t}" , "time" } , // Format from [DataType].
1243
+ { "Time" , Html5DateRenderingMode . Rfc3339 , "{0:HH:mm:ss.fff}" , "time" } ,
1244
+ { "NullableDate" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-dd}" , "date" } ,
1245
+ { "NullableDateTime" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fff}" , "datetime-local" } ,
1246
+ {
1247
+ "NullableDateTimeOffset" ,
1248
+ Html5DateRenderingMode . Rfc3339 ,
1249
+ $ "{{0:yyyy-MM-ddTHH:mm:ss.fff{ expectedK } }}",
1250
+ enabled ? "datetime-local" : "text"
1251
+ } ,
1252
+ } ;
1253
+ }
1254
+ }
1255
+
1209
1256
[ Theory ]
1210
- [ InlineData ( "Date" , Html5DateRenderingMode . CurrentCulture , "{0:d}" , "date" ) ] // Format from [DataType].
1211
- [ InlineData ( "Date" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-dd}" , "date" ) ]
1212
- [ InlineData ( "DateTime" , Html5DateRenderingMode . CurrentCulture , null , "datetime-local" ) ]
1213
- [ InlineData ( "DateTime" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fff}" , "datetime-local" ) ]
1214
- [ InlineData ( "DateTimeOffset" , Html5DateRenderingMode . CurrentCulture , null , "text" ) ]
1215
- [ InlineData ( "DateTimeOffset" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fffK}" , "text" ) ]
1216
- [ InlineData ( "DateTimeLocal" , Html5DateRenderingMode . CurrentCulture , null , "datetime-local" ) ]
1217
- [ InlineData ( "DateTimeLocal" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fff}" , "datetime-local" ) ]
1218
- [ InlineData ( "Time" , Html5DateRenderingMode . CurrentCulture , "{0:t}" , "time" ) ] // Format from [DataType].
1219
- [ InlineData ( "Time" , Html5DateRenderingMode . Rfc3339 , "{0:HH:mm:ss.fff}" , "time" ) ]
1220
- [ InlineData ( "NullableDate" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-dd}" , "date" ) ]
1221
- [ InlineData ( "NullableDateTime" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fff}" , "datetime-local" ) ]
1222
- [ InlineData ( "NullableDateTimeOffset" , Html5DateRenderingMode . Rfc3339 , "{0:yyyy-MM-ddTHH:mm:ss.fffK}" , "text" ) ]
1257
+ [ MemberData ( nameof ( ProcessAsync_CallsGenerateTextBox_AddsExpectedAttributesForRfc3339Data ) ) ]
1223
1258
public async Task ProcessAsync_CallsGenerateTextBox_AddsExpectedAttributesForRfc3339 (
1224
1259
string propertyName ,
1225
1260
Html5DateRenderingMode dateRenderingMode ,
0 commit comments