16
16
package com .vaadin .flow .component .datetimepicker .validation ;
17
17
18
18
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .BAD_INPUT_ERROR_MESSAGE ;
19
+ import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .CLEAR_AND_SET_VALUE_PROGRAMMATICALLY ;
19
20
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .CLEAR_VALUE_BUTTON ;
20
21
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .INCOMPLETE_INPUT_ERROR_MESSAGE ;
21
22
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .MAX_ERROR_MESSAGE ;
24
25
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .MIN_INPUT ;
25
26
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .REQUIRED_BUTTON ;
26
27
import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .REQUIRED_ERROR_MESSAGE ;
28
+ import static com .vaadin .flow .component .datetimepicker .validation .BasicValidationPage .SET_VALUE_PROGRAMMATICALLY ;
27
29
28
30
import org .junit .Before ;
29
31
import org .junit .Test ;
@@ -74,6 +76,17 @@ public void required_triggerBlur_assertValidity() {
74
76
assertErrorMessage (null );
75
77
}
76
78
79
+ @ Test
80
+ public void required_changeInputTemporarily_triggerBlur_assertValidity () {
81
+ $ ("button" ).id (REQUIRED_BUTTON ).click ();
82
+ dateInput .sendKeys ("1" , Keys .BACK_SPACE , Keys .ENTER );
83
+ dateInput .sendKeys (Keys .TAB );
84
+ timeInput .sendKeys (Keys .TAB );
85
+ assertServerValid ();
86
+ assertClientValid ();
87
+ assertErrorMessage (null );
88
+ }
89
+
77
90
@ Test
78
91
public void required_changeValue_assertValidity () {
79
92
$ ("button" ).id (REQUIRED_BUTTON ).click ();
@@ -100,7 +113,7 @@ public void required_changeValue_assertValidity() {
100
113
assertClientInvalid ();
101
114
assertErrorMessage (REQUIRED_ERROR_MESSAGE );
102
115
103
- setFieldIInvalid ();
116
+ setFieldInvalid ();
104
117
assertServerInvalid ();
105
118
assertClientInvalid ();
106
119
assertErrorMessage (BAD_INPUT_ERROR_MESSAGE );
@@ -153,7 +166,6 @@ public void max_changeDateInputValue_assertValidity() {
153
166
$ ("input" ).id (MAX_INPUT ).sendKeys ("2000-02-02T12:00" , Keys .ENTER );
154
167
155
168
setInputValue (dateInput , "3/3/2000" );
156
- setInputValue (timeInput , "13:00" );
157
169
assertClientInvalid ();
158
170
assertServerInvalid ();
159
171
assertErrorMessage (MAX_ERROR_MESSAGE );
@@ -199,7 +211,7 @@ public void setValue_clearValue_assertValidity() {
199
211
200
212
@ Test
201
213
public void badInput_changeValue_assertValidity () {
202
- setFieldIInvalid ();
214
+ setFieldInvalid ();
203
215
setInputValue (timeInput , "INVALID" );
204
216
assertServerInvalid ();
205
217
assertClientInvalid ();
@@ -211,7 +223,7 @@ public void badInput_changeValue_assertValidity() {
211
223
assertClientValid ();
212
224
assertErrorMessage ("" );
213
225
214
- setFieldIInvalid ();
226
+ setFieldInvalid ();
215
227
setInputValue (timeInput , "INVALID" );
216
228
assertServerInvalid ();
217
229
assertClientInvalid ();
@@ -220,7 +232,7 @@ public void badInput_changeValue_assertValidity() {
220
232
221
233
@ Test
222
234
public void badInput_setDateInputValue_blur_assertValidity () {
223
- setFieldIInvalid ();
235
+ setFieldInvalid ();
224
236
dateInput .sendKeys (Keys .TAB );
225
237
timeInput .sendKeys (Keys .TAB );
226
238
assertServerInvalid ();
@@ -239,7 +251,7 @@ public void badInput_setTimeInputValue_blur_assertValidity() {
239
251
240
252
@ Test
241
253
public void badInput_setValue_clearValue_assertValidity () {
242
- setFieldIInvalid ();
254
+ setFieldInvalid ();
243
255
setInputValue (timeInput , "INVALID" );
244
256
assertServerInvalid ();
245
257
assertClientInvalid ();
@@ -253,7 +265,7 @@ public void badInput_setValue_clearValue_assertValidity() {
253
265
254
266
@ Test
255
267
public void badInput_setDateInputValue_blur_clearValue_assertValidity () {
256
- setFieldIInvalid ();
268
+ setFieldInvalid ();
257
269
dateInput .sendKeys (Keys .TAB );
258
270
timeInput .sendKeys (Keys .TAB );
259
271
assertServerInvalid ();
@@ -378,7 +390,7 @@ public void incompleteInput_setTimeInputValue_blur_clearValue_assertValidity() {
378
390
379
391
@ Test
380
392
public void detach_attach_preservesInvalidState () {
381
- setFieldIInvalid ();
393
+ setFieldInvalid ();
382
394
383
395
detachAndReattachField ();
384
396
@@ -408,14 +420,116 @@ public void detach_hide_attach_showAndInvalidate_preservesInvalidState() {
408
420
409
421
@ Test
410
422
public void clientSideInvalidStateIsNotPropagatedToServer () {
411
- setFieldIInvalid ();
423
+ setFieldInvalid ();
412
424
413
425
executeScript ("arguments[0].invalid = false" , testField );
414
426
415
427
assertServerInvalid ();
416
428
}
417
429
418
- private void setFieldIInvalid () {
430
+ @ Test
431
+ public void triggerBlurWithNoChange_fieldNotValidated () {
432
+ dateInput .sendKeys (Keys .TAB );
433
+ timeInput .sendKeys (Keys .TAB );
434
+ assertValidationCount (0 );
435
+ }
436
+
437
+ @ Test
438
+ public void initiallyEmpty_setValidValue_fieldValidatedOnce () {
439
+ dateInput .sendKeys ("1/1/2000" );
440
+ dateInput .sendKeys (Keys .ENTER );
441
+ dateInput .sendKeys (Keys .TAB );
442
+ timeInput .sendKeys ("10:00" );
443
+ timeInput .sendKeys (Keys .ENTER );
444
+ assertValidationCount (1 );
445
+ }
446
+
447
+ @ Test
448
+ public void initiallyEmpty_setInvalidValue_fieldNotValidatedOnce () {
449
+ dateInput .sendKeys ("Invalid" );
450
+ dateInput .sendKeys (Keys .ENTER );
451
+ assertValidationCount (1 );
452
+ }
453
+
454
+ @ Test
455
+ public void initiallyValidValue_clearValue_fieldValidatedOnce () {
456
+ dateInput .sendKeys ("1/1/2000" );
457
+ dateInput .sendKeys (Keys .ENTER );
458
+ dateInput .sendKeys (Keys .TAB );
459
+ timeInput .sendKeys ("10:00" );
460
+ timeInput .sendKeys (Keys .ENTER );
461
+ assertValidationCount (1 );
462
+ clearInputValue ();
463
+ assertValidationCount (1 );
464
+ }
465
+
466
+ @ Test
467
+ public void initiallyValidValue_changeValue_fieldValidatedOnce () {
468
+ dateInput .sendKeys ("1/1/2000" );
469
+ dateInput .sendKeys (Keys .ENTER );
470
+ dateInput .sendKeys (Keys .TAB );
471
+ timeInput .sendKeys ("10:00" );
472
+ timeInput .sendKeys (Keys .ENTER );
473
+ assertValidationCount (1 );
474
+ dateInput .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
475
+ dateInput .sendKeys ("1/1/2001" );
476
+ dateInput .sendKeys (Keys .ENTER );
477
+ assertValidationCount (1 );
478
+ }
479
+
480
+ @ Test
481
+ public void initiallyInvalidValue_changeInvalidValue_fieldValidatedOnce () {
482
+ dateInput .sendKeys ("Invalid" );
483
+ dateInput .sendKeys (Keys .ENTER );
484
+ assertValidationCount (1 );
485
+ dateInput .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
486
+ dateInput .sendKeys ("Not a date" );
487
+ dateInput .sendKeys (Keys .ENTER );
488
+ assertValidationCount (1 );
489
+ }
490
+
491
+ @ Test
492
+ public void initiallyInvalidValue_setValidValue_fieldValidatedOnce () {
493
+ dateInput .sendKeys ("Invalid" );
494
+ dateInput .sendKeys (Keys .ENTER );
495
+ assertValidationCount (1 );
496
+ dateInput .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
497
+ dateInput .sendKeys ("1/1/2000" );
498
+ timeInput .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
499
+ timeInput .sendKeys ("10:00" );
500
+ timeInput .sendKeys (Keys .ENTER );
501
+ assertValidationCount (1 );
502
+ }
503
+
504
+ @ Test
505
+ public void initiallyInvalidValue_clearValue_fieldValidatedOnce () {
506
+ dateInput .sendKeys ("Invalid" );
507
+ dateInput .sendKeys (Keys .ENTER );
508
+ assertValidationCount (1 );
509
+ clearInputValue ();
510
+ assertValidationCount (1 );
511
+ }
512
+
513
+ @ Test
514
+ public void max_setDateOutOfRange_fieldValidatedOnce () {
515
+ $ ("input" ).id (MAX_INPUT ).sendKeys ("2000-02-02T12:00" , Keys .ENTER );
516
+ setInputValue (dateInput , "3/3/2000" );
517
+ assertValidationCount (1 );
518
+ }
519
+
520
+ @ Test
521
+ public void setValueProgrammatically_fieldValidatedOnce () {
522
+ clickElementWithJs (SET_VALUE_PROGRAMMATICALLY );
523
+ assertValidationCount (1 );
524
+ }
525
+
526
+ @ Test
527
+ public void clearAndSetValueProgrammatically_fieldValidatedOnce () {
528
+ clickElementWithJs (CLEAR_AND_SET_VALUE_PROGRAMMATICALLY );
529
+ assertValidationCount (1 );
530
+ }
531
+
532
+ private void setFieldInvalid () {
419
533
setInputValue (dateInput , "INVALID" );
420
534
setInputValue (timeInput , "INVALID" );
421
535
}
@@ -428,4 +542,10 @@ private void setInputValue(TestBenchElement input, String value) {
428
542
input .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
429
543
input .sendKeys (value , Keys .ENTER );
430
544
}
545
+
546
+ private void clearInputValue () {
547
+ dateInput .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
548
+ timeInput .sendKeys (Keys .chord (Keys .SHIFT , Keys .HOME ), Keys .BACK_SPACE );
549
+ timeInput .sendKeys (Keys .ENTER );
550
+ }
431
551
}
0 commit comments