1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
package com.vaadin.tests.components.datefield;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.tests.tb3.SingleBrowserTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class DateFieldBinderCrossValidationTest extends SingleBrowserTest {
private final static String EXPECTED_ERROR = "from field is Date is out of allowed range. To field is Date is out of allowed range";
private final static String EXPECTED_NULL_ERROR = "from field is null. To field is null";
@Test
public void makeBothFieldInvalidThenValid() {
openTestURL();
DateFieldElement fromField = $(DateFieldElement.class).id("from-field");
WebElement fromFieldText = fromField.findElement(By.tagName("input"));
DateFieldElement toField = $(DateFieldElement.class).id("to-field");
WebElement toFieldText = toField.findElement(By.tagName("input"));
LabelElement label = $(LabelElement.class).id("status");
fromFieldText.sendKeys("2019/01/01", Keys.ENTER);
toFieldText.sendKeys("2018/02/02", Keys.ENTER);
sleep(200);
assertEquals("Error message should contain the information",
EXPECTED_ERROR, label.getText());
fromFieldText.clear();
fromFieldText.sendKeys("2018/01/01", Keys.ENTER);
assertEquals("Error message should be null", EXPECTED_NULL_ERROR,
label.getText());
}
@Test
public void dateFieldRangeYearDigitsIncrease() {
openTestURL();
DateFieldElement toField = $(DateFieldElement.class).id("to-field");
// This will set the rangeEnd of the fromField
WebElement toFieldText = toField.findElement(By.tagName("input"));
toFieldText.sendKeys("9999/12/31", Keys.ENTER);
DateFieldElement fromField = $(DateFieldElement.class).id("from-field");
WebElement fromFieldText = fromField.findElement(By.tagName("input"));
// Set year to 9999, next year and next month will be on 10000
fromFieldText.sendKeys("9999/12/01", Keys.ENTER);
fromField.openPopup();
waitForElementPresent(By.className("v-datefield-popup"));
WebElement monthYearLabel = findElement(By.className("v-datefield-calendarpanel-month"));
// The next month button should be disabled
findElement(By.className("v-button-nextmonth")).click();
// Test that year has not changed
assertTrue("Month label should contain 9999, contains: "+monthYearLabel.getText(),monthYearLabel.getText().contains("9999"));
// The next year button should be disabled
findElement(By.className("v-button-nextyear")).click();
// Test that year has not changed
assertTrue("Month label should contain 9999, contains: "+monthYearLabel.getText(),monthYearLabel.getText().contains("9999"));
}
@Test
public void dateFieldRangeYearBigNumbersPopupOpens() {
openTestURL();
DateFieldElement toField = $(DateFieldElement.class).id("to-field");
// This will set the rangeEnd of the fromField
WebElement toFieldText = toField.findElement(By.tagName("input"));
toFieldText.sendKeys("10000/12/31", Keys.ENTER);
DateFieldElement fromField = $(DateFieldElement.class).id("from-field");
// Test that popup opens
fromField.openPopup();
waitForElementPresent(By.className("v-datefield-popup"));
assertElementPresent(By.className("v-datefield-popup"));
}
}
|