11// Licensed to the .NET Foundation under one or more agreements.
22// The .NET Foundation licenses this file to you under the MIT license.
33
4- using System ;
5- using System . Linq ;
64using System . Runtime . InteropServices ;
75using BasicTestApp ;
86using BasicTestApp . RouterTest ;
1210using Microsoft . AspNetCore . Testing ;
1311using OpenQA . Selenium ;
1412using OpenQA . Selenium . Interactions ;
15- using Xunit ;
1613using Xunit . Abstractions ;
1714
1815namespace Microsoft . AspNetCore . Components . E2ETest . Tests
@@ -777,27 +774,51 @@ public void CanArriveAtQueryStringPageWithNoQuery()
777774 Assert . Equal ( "Hello Abc ." , app . FindElement ( By . Id ( "test-info" ) ) . Text ) ;
778775 Assert . Equal ( "0" , app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
779776 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
777+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
778+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
780779 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
781780 Assert . Equal ( "0 values ()" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
782781
783782 AssertHighlightedLinks ( "With query parameters (none)" ) ;
784783 }
785784
786785 [ Fact ]
787- public void CanArriveAtQueryStringPageWithQuery ( )
786+ public void CanArriveAtQueryStringPageWithStringQuery ( )
788787 {
789788 SetUrlViaPushState ( "/WithQueryParameters/Abc?stringvalue=Hello+there" ) ;
790789
791790 var app = Browser . MountTestComponent < TestRouter > ( ) ;
792791 Assert . Equal ( "Hello Abc ." , app . FindElement ( By . Id ( "test-info" ) ) . Text ) ;
793792 Assert . Equal ( "0" , app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
794793 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
794+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
795+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
795796 Assert . Equal ( "Hello there" , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
796797 Assert . Equal ( "0 values ()" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
797798
798799 AssertHighlightedLinks ( "With query parameters (none)" , "With query parameters (passing string value)" ) ;
799800 }
800801
802+ [ Fact ]
803+ public void CanArriveAtQueryStringPageWithDateTimeQuery ( )
804+ {
805+ var dateTime = new DateTime ( 2000 , 1 , 2 , 3 , 4 , 5 , 6 ) ;
806+ var dateOnly = new DateOnly ( 2000 , 1 , 2 ) ;
807+ var timeOnly = new TimeOnly ( 3 , 4 , 5 , 6 ) ;
808+ SetUrlViaPushState ( $ "/WithQueryParameters/Abc?NullableDateTimeValue=2000-01-02%2003:04:05&NullableDateOnlyValue=2000-01-02&NullableTimeOnlyValue=03:04:05") ;
809+
810+ var app = Browser . MountTestComponent < TestRouter > ( ) ;
811+ Assert . Equal ( "Hello Abc ." , app . FindElement ( By . Id ( "test-info" ) ) . Text ) ;
812+ Assert . Equal ( "0" , app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
813+ Assert . Equal ( dateTime . ToString ( "hh:mm:ss on yyyy-MM-dd" ) , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
814+ Assert . Equal ( dateOnly . ToString ( "yyyy-MM-dd" ) , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
815+ Assert . Equal ( timeOnly . ToString ( "hh:mm:ss" ) , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
816+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
817+ Assert . Equal ( "0 values ()" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
818+
819+ AssertHighlightedLinks ( "With query parameters (none)" , "With query parameters (passing Date Time values)" ) ;
820+ }
821+
801822 [ Fact ]
802823 public void CanNavigateToQueryStringPageWithNoQuery ( )
803824 {
@@ -809,6 +830,8 @@ public void CanNavigateToQueryStringPageWithNoQuery()
809830 Assert . Equal ( "Hello Abc ." , app . FindElement ( By . Id ( "test-info" ) ) . Text ) ;
810831 Assert . Equal ( "0" , app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
811832 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
833+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
834+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
812835 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
813836 Assert . Equal ( "0 values ()" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
814837
@@ -827,6 +850,8 @@ public void CanNavigateBetweenPagesWithQueryStrings()
827850 Browser . Equal ( "Hello Abc ." , ( ) => app . FindElement ( By . Id ( "test-info" ) ) . Text ) ;
828851 Assert . Equal ( "0" , app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
829852 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
853+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
854+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
830855 Assert . Equal ( "Hello there" , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
831856 Assert . Equal ( "0 values ()" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
832857 var instanceId = app . FindElement ( By . Id ( "instance-id" ) ) . Text ;
@@ -838,6 +863,8 @@ public void CanNavigateBetweenPagesWithQueryStrings()
838863 app . FindElement ( By . LinkText ( "With IntValue and LongValues" ) ) . Click ( ) ;
839864 Browser . Equal ( "123" , ( ) => app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
840865 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
866+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
867+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
841868 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
842869 Assert . Equal ( "3 values (50, 100, -20)" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
843870 Assert . Equal ( instanceId , app . FindElement ( By . Id ( "instance-id" ) ) . Text ) ;
@@ -847,6 +874,8 @@ public void CanNavigateBetweenPagesWithQueryStrings()
847874 Browser . Navigate ( ) . Back ( ) ;
848875 Browser . Equal ( "0" , ( ) => app . FindElement ( By . Id ( "value-QueryInt" ) ) . Text ) ;
849876 Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateTimeValue" ) ) . Text ) ;
877+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableDateOnlyValue" ) ) . Text ) ;
878+ Assert . Equal ( string . Empty , app . FindElement ( By . Id ( "value-NullableTimeOnlyValue" ) ) . Text ) ;
850879 Assert . Equal ( "Hello there" , app . FindElement ( By . Id ( "value-StringValue" ) ) . Text ) ;
851880 Assert . Equal ( "0 values ()" , app . FindElement ( By . Id ( "value-LongValues" ) ) . Text ) ;
852881 Assert . Equal ( instanceId , app . FindElement ( By . Id ( "instance-id" ) ) . Text ) ;
0 commit comments