@@ -135,6 +135,8 @@ public void MerchantsEdit_TabSwitch_ToOpeningHours_UpdatesActiveTab()
135135 openingHoursButton ? . Click ( ) ;
136136
137137 cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Save Opening Hours" ) , timeout : TimeSpan . FromSeconds ( 5 ) ) ;
138+ cut . Markup . IndexOf ( "Monday" , StringComparison . Ordinal ) . ShouldBeLessThan ( cut . Markup . IndexOf ( "Sunday" , StringComparison . Ordinal ) ) ;
139+ cut . Markup . IndexOf ( "Saturday" , StringComparison . Ordinal ) . ShouldBeLessThan ( cut . Markup . IndexOf ( "Sunday" , StringComparison . Ordinal ) ) ;
138140 cut . Markup . ShouldContain ( "Sunday" ) ;
139141 cut . Markup . ShouldContain ( "Saturday" ) ;
140142 }
@@ -904,8 +906,6 @@ public void MerchantsEdit_SaveOpeningHours_Success_ShowsSuccessMessageAndCallsSe
904906 IElement ? openingHoursButton = cut . FindAll ( "button" ) . FirstOrDefault ( b => b . TextContent . Contains ( "Opening Hours" ) ) ;
905907 openingHoursButton ? . Click ( ) ;
906908
907- cut . Find ( "#sundayOpening" ) . Change ( "8:00" ) ;
908- cut . Find ( "#sundayClosing" ) . Change ( "1800" ) ;
909909 cut . Find ( "#mondayOpening" ) . Change ( "0800" ) ;
910910 cut . Find ( "#mondayClosing" ) . Change ( "1700" ) ;
911911 cut . Find ( "#tuesdayOpening" ) . Change ( "0800" ) ;
@@ -918,6 +918,8 @@ public void MerchantsEdit_SaveOpeningHours_Success_ShowsSuccessMessageAndCallsSe
918918 cut . Find ( "#fridayClosing" ) . Change ( "1700" ) ;
919919 cut . Find ( "#saturdayOpening" ) . Change ( "0900" ) ;
920920 cut . Find ( "#saturdayClosing" ) . Change ( "1600" ) ;
921+ cut . Find ( "#sundayOpening" ) . Change ( "8:00" ) ;
922+ cut . Find ( "#sundayClosing" ) . Change ( "1800" ) ;
921923
922924 cut . Find ( "#saveOpeningHoursButton" ) . Click ( ) ;
923925
@@ -934,6 +936,50 @@ public void MerchantsEdit_SaveOpeningHours_Success_ShowsSuccessMessageAndCallsSe
934936 Times . Once ) ;
935937 }
936938
939+ [ Fact ]
940+ public void MerchantsEdit_SaveOpeningHours_InvalidClosingTimeAbove2359_ShowsErrorAndDoesNotCallService ( )
941+ {
942+ var merchantId = Guid . NewGuid ( ) ;
943+ SetupSuccessfulDataLoad ( merchantId ) ;
944+
945+ IRenderedComponent < MerchantsEdit > cut = RenderComponent < MerchantsEdit > ( parameters => parameters
946+ . Add ( p => p . MerchantId , merchantId ) ) ;
947+ cut . WaitForState ( ( ) => ! cut . Markup . Contains ( "animate-spin" ) , TimeSpan . FromSeconds ( 5 ) ) ;
948+
949+ IElement ? openingHoursButton = cut . FindAll ( "button" ) . FirstOrDefault ( b => b . TextContent . Contains ( "Opening Hours" ) ) ;
950+ openingHoursButton ? . Click ( ) ;
951+
952+ PopulateValidOpeningHours ( cut ) ;
953+ cut . Find ( "#sundayClosing" ) . Change ( "2400" ) ;
954+
955+ cut . Find ( "#saveOpeningHoursButton" ) . Click ( ) ;
956+
957+ cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Sunday closing time must be entered in HHmm format." ) , timeout : TimeSpan . FromSeconds ( 10 ) ) ;
958+ this . MerchantUIService . Verify ( m => m . UpdateMerchantOpeningHours ( It . IsAny < CorrelationId > ( ) , It . IsAny < Guid > ( ) , merchantId , It . IsAny < MerchantModels . MerchantOpeningHoursModel > ( ) ) , Times . Never ) ;
959+ }
960+
961+ [ Fact ]
962+ public void MerchantsEdit_SaveOpeningHours_InvalidOpeningTimeBelow0000_ShowsErrorAndDoesNotCallService ( )
963+ {
964+ var merchantId = Guid . NewGuid ( ) ;
965+ SetupSuccessfulDataLoad ( merchantId ) ;
966+
967+ IRenderedComponent < MerchantsEdit > cut = RenderComponent < MerchantsEdit > ( parameters => parameters
968+ . Add ( p => p . MerchantId , merchantId ) ) ;
969+ cut . WaitForState ( ( ) => ! cut . Markup . Contains ( "animate-spin" ) , TimeSpan . FromSeconds ( 5 ) ) ;
970+
971+ IElement ? openingHoursButton = cut . FindAll ( "button" ) . FirstOrDefault ( b => b . TextContent . Contains ( "Opening Hours" ) ) ;
972+ openingHoursButton ? . Click ( ) ;
973+
974+ PopulateValidOpeningHours ( cut ) ;
975+ cut . Find ( "#mondayOpening" ) . Change ( "-100" ) ;
976+
977+ cut . Find ( "#saveOpeningHoursButton" ) . Click ( ) ;
978+
979+ cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Monday opening time must be entered in HHmm format." ) , timeout : TimeSpan . FromSeconds ( 10 ) ) ;
980+ this . MerchantUIService . Verify ( m => m . UpdateMerchantOpeningHours ( It . IsAny < CorrelationId > ( ) , It . IsAny < Guid > ( ) , merchantId , It . IsAny < MerchantModels . MerchantOpeningHoursModel > ( ) ) , Times . Never ) ;
981+ }
982+
937983 [ Fact ]
938984 public void MerchantsEdit_SwapDeviceConfirm_Success_ShowsSuccessMessage ( )
939985 {
@@ -1186,4 +1232,22 @@ private void SetupSuccessfulDataLoadWithContracts(Guid merchantId, List<Contract
11861232
11871233 private void SetupSuccessfulDataLoadWithAssignedContracts ( Guid merchantId , List < MerchantModels . MerchantContractModel > assignedContracts )
11881234 => SetupSuccessfulDataLoad ( merchantId , assignedContracts : assignedContracts ) ;
1235+
1236+ private static void PopulateValidOpeningHours ( IRenderedComponent < MerchantsEdit > cut )
1237+ {
1238+ cut . Find ( "#mondayOpening" ) . Change ( "0800" ) ;
1239+ cut . Find ( "#mondayClosing" ) . Change ( "1700" ) ;
1240+ cut . Find ( "#tuesdayOpening" ) . Change ( "0800" ) ;
1241+ cut . Find ( "#tuesdayClosing" ) . Change ( "1700" ) ;
1242+ cut . Find ( "#wednesdayOpening" ) . Change ( "0800" ) ;
1243+ cut . Find ( "#wednesdayClosing" ) . Change ( "1700" ) ;
1244+ cut . Find ( "#thursdayOpening" ) . Change ( "0800" ) ;
1245+ cut . Find ( "#thursdayClosing" ) . Change ( "1700" ) ;
1246+ cut . Find ( "#fridayOpening" ) . Change ( "0800" ) ;
1247+ cut . Find ( "#fridayClosing" ) . Change ( "1700" ) ;
1248+ cut . Find ( "#saturdayOpening" ) . Change ( "0900" ) ;
1249+ cut . Find ( "#saturdayClosing" ) . Change ( "1600" ) ;
1250+ cut . Find ( "#sundayOpening" ) . Change ( "0800" ) ;
1251+ cut . Find ( "#sundayClosing" ) . Change ( "1800" ) ;
1252+ }
11891253}
0 commit comments