@@ -1027,35 +1027,92 @@ public void OnClickShortLink_Ok()
10271027 }
10281028
10291029 [ Fact ]
1030- public void FormatValueAsString_Ok ( )
1030+ public void FormatValueAsString_DateTime_Ok ( )
10311031 {
10321032 // 设置为 最小值或者 null 时 当 AutoToday 为 true 时自动设置为当前时间
10331033 var cut = Context . RenderComponent < DateTimePicker < DateTime > > ( pb =>
10341034 {
10351035 pb . Add ( a => a . AutoToday , true ) ;
10361036 pb . Add ( a => a . Value , DateTime . MinValue ) ;
10371037 } ) ;
1038+ var input = cut . Find ( ".datetime-picker-input" ) ;
1039+ Assert . Equal ( $ "{ DateTime . Today : yyyy-MM-dd} ", input . GetAttribute ( "value" ) ) ;
10381040 Assert . Equal ( DateTime . Today , cut . Instance . Value ) ;
10391041
1040- var picker = cut . Instance ;
1041- var mi = picker . GetType ( ) . GetMethod ( "FormatValueAsString" , System . Reflection . BindingFlags . Instance | System . Reflection . BindingFlags . NonPublic ) ! ;
1042- var v = mi . Invoke ( picker , [ DateTime . MinValue ] ) ;
1043- Assert . Equal ( $ "{ DateTime . Today : yyyy-MM-dd} ", v ) ;
1044-
10451042 // 设置为 禁用日期时 UI 显示为空字符串
1046- // cut.SetParametersAndRender(pb =>
1047- // {
1048- // pb.Add(a => a.Value, DateTime.Today);
1049- // pb.Add(a => a.OnGetDisabledDaysCallback, async (start, end) =>
1050- // {
1051- // await Task.Delay(0);
1052- // var ret = new List<DateTime>() { DateTime.Today };
1053- // return ret;
1054- // });
1055- // });
1056- //
1057- // v = mi.Invoke(picker, [DateTime.MinValue]);
1058- // Assert.Equal(string.Empty, v);
1043+ cut . SetParametersAndRender ( pb =>
1044+ {
1045+ pb . Add ( a => a . DisplayDisabledDayAsEmpty , true ) ;
1046+ pb . Add ( a => a . Value , DateTime . MinValue ) ;
1047+ pb . Add ( a => a . AutoToday , true ) ;
1048+ pb . Add ( a => a . OnGetDisabledDaysCallback , async ( start , end ) =>
1049+ {
1050+ await Task . Delay ( 0 ) ;
1051+ var ret = new List < DateTime > ( ) { DateTime . Today } ;
1052+ return ret ;
1053+ } ) ;
1054+ } ) ;
1055+ Assert . Equal ( "" , input . GetAttribute ( "value" ) ) ;
1056+
1057+ // 禁用 AutoToday 显示 0001-01-01
1058+ cut . SetParametersAndRender ( pb =>
1059+ {
1060+ pb . Add ( a => a . Value , DateTime . MinValue ) ;
1061+ pb . Add ( a => a . AutoToday , false ) ;
1062+ } ) ;
1063+ Assert . Equal ( "0001-01-01" , input . GetAttribute ( "value" ) ) ;
1064+
1065+ // 更改值为未禁用日期
1066+ cut . SetParametersAndRender ( pb =>
1067+ {
1068+ pb . Add ( a => a . Value , DateTime . Today . AddDays ( - 1 ) ) ;
1069+ } ) ;
1070+ Assert . Equal ( $ "{ DateTime . Today . AddDays ( - 1 ) : yyyy-MM-dd} ", input . GetAttribute ( "value" ) ) ;
1071+ }
1072+
1073+ [ Fact ]
1074+ public void FormatValueAsString_DateTimeOffset_Ok ( )
1075+ {
1076+ // 设置为 最小值或者 null 时 当 AutoToday 为 true 时自动设置为当前时间
1077+ var cut = Context . RenderComponent < DateTimePicker < DateTimeOffset ? > > ( pb =>
1078+ {
1079+ pb . Add ( a => a . DisplayDisabledDayAsEmpty , true ) ;
1080+ pb . Add ( a => a . Value , null ) ;
1081+ pb . Add ( a => a . AutoToday , false ) ;
1082+ pb . Add ( a => a . OnGetDisabledDaysCallback , async ( start , end ) =>
1083+ {
1084+ await Task . Delay ( 0 ) ;
1085+ var ret = new List < DateTime > ( ) { DateTime . Today } ;
1086+ return ret ;
1087+ } ) ;
1088+ } ) ;
1089+ var input = cut . Find ( ".datetime-picker-input" ) ;
1090+ Assert . Equal ( "" , input . GetAttribute ( "value" ) ) ;
1091+ Assert . Null ( cut . Instance . Value ) ;
1092+
1093+ cut . SetParametersAndRender ( pb =>
1094+ {
1095+ pb . Add ( a => a . Value , DateTimeOffset . Now ) ;
1096+ pb . Add ( a => a . DisplayDisabledDayAsEmpty , false ) ;
1097+ } ) ;
1098+ Assert . Equal ( $ "{ DateTimeOffset . Now : yyyy-MM-dd} ", input . GetAttribute ( "value" ) ) ;
1099+
1100+ cut . SetParametersAndRender ( pb =>
1101+ {
1102+ pb . Add ( a => a . Value , DateTimeOffset . MinValue ) ;
1103+ pb . Add ( a => a . AutoToday , false ) ;
1104+ pb . Add ( a => a . DisplayMinValueAsEmpty , false ) ;
1105+ pb . Add ( a => a . DisplayDisabledDayAsEmpty , false ) ;
1106+ } ) ;
1107+ Assert . Equal ( $ "0001-01-01", input . GetAttribute ( "value" ) ) ;
1108+
1109+ cut . SetParametersAndRender ( pb =>
1110+ {
1111+ pb . Add ( a => a . Value , DateTimeOffset . MinValue ) ;
1112+ pb . Add ( a => a . AutoToday , true ) ;
1113+ pb . Add ( a => a . DisplayDisabledDayAsEmpty , true ) ;
1114+ } ) ;
1115+ Assert . Equal ( $ "0001-01-01", input . GetAttribute ( "value" ) ) ;
10591116 }
10601117
10611118 [ Fact ]
0 commit comments