You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DateFieldBinderCrossValidationTest.java 3.6KB

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