15
15
*/
16
16
package com .vaadin .flow .component .datepicker ;
17
17
18
- import static org .junit .Assert .assertTrue ;
19
-
20
18
import java .time .LocalDate ;
21
19
import java .time .Month ;
22
20
29
27
30
28
import com .vaadin .flow .component .datepicker .testbench .DatePickerElement ;
31
29
import com .vaadin .flow .testutil .TestPath ;
32
- import com .vaadin .testbench .TestBenchElement ;
33
- import com .vaadin .testbench .TestBenchTestCase ;
34
30
import com .vaadin .tests .AbstractComponentIT ;
35
31
36
32
/**
40
36
public class DatePickerIT extends AbstractComponentIT {
41
37
42
38
private static final String DATEPICKER_OVERLAY = "vaadin-date-picker-overlay" ;
43
- private TestBenchTestCase layout ;
44
39
45
40
@ Before
46
41
public void init () {
47
42
open ();
48
43
waitForElementPresent (By .tagName ("vaadin-date-picker" ));
49
- layout = this ;
50
44
}
51
45
52
46
@ Test
@@ -57,93 +51,92 @@ public void openSimpleDatePickerFromServer_overlayVisible() {
57
51
58
52
@ Test
59
53
public void selectDateOnSimpleDatePicker () {
60
- WebElement picker = layout .findElement (By .id ("simple-picker" ));
61
- WebElement message = layout .findElement (By .id ("simple-picker-message" ));
54
+ DatePickerElement picker = $ (DatePickerElement .class )
55
+ .id ("simple-picker" );
56
+ WebElement message = findElement (By .id ("simple-picker-message" ));
62
57
63
- executeScript ( "arguments[0].value = ' 1985-01-10'" , picker );
58
+ picker . setDate ( LocalDate . of ( 1985 , 1 , 10 ) );
64
59
65
60
waitUntil (driver -> message .getText ()
66
61
.contains ("Day: 10\n Month: 1\n Year: 1985" ));
67
62
68
- executeScript ( "arguments[0].value = ''" , picker );
63
+ picker . clear ( );
69
64
70
65
waitUntil (driver -> "No date is selected" .equals (message .getText ()));
71
66
}
72
67
73
68
@ Test
74
69
public void selectDateOnMinMaxDatePicker () {
75
- WebElement picker = layout . findElement ( By . id ( "min-and-max-picker" ));
76
- WebElement message = layout
77
- . findElement (By .id ("min-and-max-picker-message" ));
70
+ DatePickerElement picker = $ ( DatePickerElement . class )
71
+ . id ( "min-and-max-picker" );
72
+ WebElement message = findElement (By .id ("min-and-max-picker-message" ));
78
73
79
74
LocalDate now = LocalDate .now ();
80
- executeScript ("arguments[0].value = arguments[1]" , picker ,
81
- now .toString ());
75
+ picker .setDate (now );
82
76
83
- Assert .assertEquals ("The selected date should be considered valid" ,
84
- false , executeScript ( "return arguments[0]. invalid", picker ));
77
+ Assert .assertFalse ("The selected date should be considered valid" ,
78
+ picker . getPropertyBoolean ( " invalid" ));
85
79
86
80
waitUntil (driver -> message .getText ()
87
81
.contains (("Day: " + now .getDayOfMonth () + "\n Month: "
88
82
+ now .getMonthValue () + "\n Year: " + now .getYear ())));
89
83
90
- executeScript ( "arguments[0].value = ''" , picker );
84
+ picker . clear ( );
91
85
92
86
waitUntil (driver -> "No date is selected" .equals (message .getText ()));
93
87
94
- Assert .assertEquals ("The empty date should be considered valid" , false ,
95
- executeScript ( "return arguments[0]. invalid", picker ));
88
+ Assert .assertFalse ("The empty date should be considered valid" ,
89
+ picker . getPropertyBoolean ( " invalid" ));
96
90
97
91
LocalDate invalid = now .minusYears (1 );
98
92
99
- executeScript ("arguments[0].value = arguments[1]" , picker ,
100
- invalid .toString ());
93
+ picker .setDate (invalid );
101
94
102
- Assert .assertEquals ("The selected date should be considered invalid" ,
103
- true , executeScript ( "return arguments[0]. invalid", picker ));
95
+ Assert .assertTrue ("The selected date should be considered invalid" ,
96
+ picker . getPropertyBoolean ( " invalid" ));
104
97
}
105
98
106
99
@ Test
107
100
public void selectDateOnFinnishDatePicker () {
108
- WebElement picker = layout . findElement ( By . id ( "finnish-picker" ));
109
- WebElement message = layout
110
- . findElement (By .id ("finnish-picker-message" ));
101
+ DatePickerElement picker = $ ( DatePickerElement . class )
102
+ . id ( "finnish-picker" );
103
+ WebElement message = findElement (By .id ("finnish-picker-message" ));
111
104
112
- executeScript ( "arguments[0].value = ' 1985-01-10'" , picker );
105
+ picker . setDate ( LocalDate . of ( 1985 , 1 , 10 ) );
113
106
114
107
waitUntil (driver -> "Day of week: torstai\n Month: tammiku"
115
108
.equals (message .getText ()));
116
109
117
- executeScript ( "arguments[0].value = ''" , picker );
110
+ picker . clear ( );
118
111
119
112
waitUntil (driver -> "No date is selected" .equals (message .getText ()));
120
113
121
- executeScript ("arguments[0].setAttribute(\" opened\" , true)" , picker );
122
- waitForElementPresent (By .tagName (DATEPICKER_OVERLAY ));
114
+ picker .open ();
123
115
124
- TestBenchElement overlay = $ (DATEPICKER_OVERLAY ).first ();
125
- WebElement todayButton = overlay . $ ( "*" )
126
- .attribute ( " slot" , " today-button" ). first ( );
116
+ WebElement overlay = $ (DATEPICKER_OVERLAY ).waitForFirst ();
117
+ WebElement todayButton = overlay
118
+ .findElement ( By . cssSelector ( "[ slot= today-button]" ) );
127
119
128
120
waitUntil (driver -> "tänään" .equals (todayButton .getText ()));
129
121
}
130
122
131
123
@ Test
132
124
public void selectDatesOnLinkedDatePickers () {
133
- WebElement startPicker = layout .findElement (By .id ("start-picker" ));
134
- WebElement endPicker = layout .findElement (By .id ("end-picker" ));
135
- WebElement message = layout .findElement (By .id ("start-and-end-message" ));
125
+ DatePickerElement startPicker = $ (DatePickerElement .class )
126
+ .id ("start-picker" );
127
+ DatePickerElement endPicker = $ (DatePickerElement .class )
128
+ .id ("end-picker" );
129
+ WebElement message = findElement (By .id ("start-and-end-message" ));
136
130
137
- executeScript ( "arguments[0].value = ' 1985-01-10'" , startPicker );
131
+ startPicker . setDate ( LocalDate . of ( 1985 , 1 , 10 ) );
138
132
139
133
waitUntil (driver -> "Select the ending date" .equals (message .getText ()));
140
134
141
135
Assert .assertEquals (
142
136
"The min date at the end date picker should be 1985-01-11" ,
143
- true , executeScript ("return arguments[0].min === '1985-01-11'" ,
144
- endPicker ));
137
+ "1985-01-11" , endPicker .getProperty ("min" ));
145
138
146
- executeScript ( "arguments[0].value = ' 1985-01-20'" , endPicker );
139
+ endPicker . setDate ( LocalDate . of ( 1985 , 1 , 20 ) );
147
140
148
141
waitUntil (driver -> "Selected period:\n From 1985-01-10 to 1985-01-20"
149
142
.equals (message .getText ()));
@@ -153,50 +146,47 @@ true, executeScript("return arguments[0].min === '1985-01-11'",
153
146
true , executeScript ("return arguments[0].max === '1985-01-19'" ,
154
147
startPicker ));
155
148
156
- executeScript ( "arguments[0].value = ''" , startPicker );
149
+ startPicker . clear ( );
157
150
waitUntil (
158
151
driver -> "Select the starting date" .equals (message .getText ()));
159
152
}
160
153
161
154
@ Test
162
155
public void selectDatesOnCustomLocaleDatePickers () {
163
- WebElement localePicker = layout
164
- .findElement (By .id ("locale-change-picker" ));
165
- WebElement message = layout
166
- .findElement (By .id ("Customize-locale-picker-message" ));
167
- WebElement displayText = localePicker .findElement (By .tagName ("input" ));
168
- executeScript ("arguments[0].value = '2018-03-27'" , localePicker );
156
+ DatePickerElement localePicker = $ (DatePickerElement .class )
157
+ .id ("locale-change-picker" );
158
+ WebElement message = findElement (
159
+ By .id ("Customize-locale-picker-message" ));
160
+ localePicker .setDate (LocalDate .of (2018 , 3 , 27 ));
169
161
170
162
waitUntil (driver -> message .getText ()
171
163
.contains ("Day: 27\n Month: 3\n Year: 2018\n Locale:" ));
172
164
173
165
Assert .assertEquals (
174
- "The format of the displayed date should be MM/DD/YYYY." , true ,
175
- executeScript ("return arguments[0].value === '3/27/2018'" ,
176
- displayText ));
166
+ "The format of the displayed date should be MM/DD/YYYY" ,
167
+ "3/27/2018" , localePicker .getInputValue ());
177
168
178
- layout . findElement (By .id ("Locale-UK" )).click ();
179
- executeScript ( "arguments[0].value = ' 2018-03-26'" , localePicker );
169
+ findElement (By .id ("Locale-UK" )).click ();
170
+ localePicker . setDate ( LocalDate . of ( 2018 , 3 , 26 ) );
180
171
waitUntil (driver -> "Day: 26\n Month: 3\n Year: 2018\n Locale: en_GB"
181
172
.equals (message .getText ()));
182
173
183
174
Assert .assertEquals (
184
- "The format of the displayed date should be DD/MM/YYYY." , true ,
185
- executeScript ("return arguments[0].value === '26/03/2018'" ,
186
- displayText ));
175
+ "The format of the displayed date should be DD/MM/YYYY" ,
176
+ "26/03/2018" , localePicker .getInputValue ());
187
177
188
- layout . findElement (By .id ("Locale-US" )).click ();
189
- executeScript ( "arguments[0].value = ' 2018-03-25'" , localePicker );
178
+ findElement (By .id ("Locale-US" )).click ();
179
+ localePicker . setDate ( LocalDate . of ( 2018 , 3 , 25 ) );
190
180
waitUntil (driver -> "Day: 25\n Month: 3\n Year: 2018\n Locale: en_US"
191
181
.equals (message .getText ()));
192
182
Assert .assertEquals (
193
- "The format of the displayed date should be MM/DD/YYYY." , true ,
194
- executeScript ("return arguments[0].value === '3/25/2018'" ,
195
- displayText ));
183
+ "The format of the displayed date should be MM/DD/YYYY" ,
184
+ "3/25/2018" , localePicker .getInputValue ());
196
185
197
- layout .findElement (By .id ("Locale-UK" )).click ();
198
- assertTrue ((Boolean ) executeScript (
199
- "return arguments[0].value === '25/03/2018'" , displayText ));
186
+ findElement (By .id ("Locale-UK" )).click ();
187
+ Assert .assertEquals (
188
+ "The format of the displayed date should be DD/MM/YYYY" ,
189
+ "25/03/2018" , localePicker .getInputValue ());
200
190
}
201
191
202
192
private void setDateAndAssert (DatePickerElement datePicker , LocalDate date ,
@@ -209,8 +199,6 @@ private void setDateAndAssert(DatePickerElement datePicker, LocalDate date,
209
199
public void selectDatesBeforeYear1000 () {
210
200
DatePickerElement localePicker = $ (DatePickerElement .class )
211
201
.id ("locale-change-picker" );
212
- TestBenchElement message = $ ("div" )
213
- .id ("Customize-locale-picker-message" );
214
202
215
203
setDateAndAssert (localePicker , LocalDate .of (900 , Month .MARCH , 7 ),
216
204
"3/7/0900" );
@@ -269,8 +257,6 @@ private void setInputValueAndAssert(DatePickerElement datePicker,
269
257
public void selectDatesBeforeYear1000SimulateUserInput () {
270
258
DatePickerElement localePicker = $ (DatePickerElement .class )
271
259
.id ("locale-change-picker" );
272
- TestBenchElement message = $ ("div" )
273
- .id ("Customize-locale-picker-message" );
274
260
275
261
setInputValueAndAssert (localePicker , "3/7/0900" ,
276
262
LocalDate .of (900 , Month .MARCH , 7 ));
@@ -345,7 +331,8 @@ public void datePicker_OpenedChangeListener() {
345
331
WebElement message = findElement (
346
332
By .id ("picker-with-opened-change-message" ));
347
333
348
- WebElement picker = findElement (By .id ("picker-with-opened-change" ));
334
+ DatePickerElement picker = $ (DatePickerElement .class )
335
+ .id ("picker-with-opened-change" );
349
336
350
337
picker .click ();
351
338
waitUntil (drive -> "date picker was opened" .equals (message .getText ()));
0 commit comments