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.

DateTimeFieldZoneIdFutureSummerDatesTest.java 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package com.vaadin.tests.components.datefield;
  2. import static com.vaadin.tests.components.datefield.DateTimeFieldZoneIdFutureSummerDates.END_YEAR_DATEFIELD_ID;
  3. import static com.vaadin.tests.components.datefield.DateTimeFieldZoneIdFutureSummerDates.FIXED_RANGE_DATEFIELD_ID;
  4. import static com.vaadin.tests.components.datefield.DateTimeFieldZoneIdFutureSummerDates.LOCALE_ID;
  5. import static com.vaadin.tests.components.datefield.DateTimeFieldZoneIdFutureSummerDates.START_YEAR_DATEFIELD_ID;
  6. import static com.vaadin.tests.components.datefield.DateTimeFieldZoneIdFutureSummerDates.VARIABLE_RANGE_DATEFIELD_ID;
  7. import static com.vaadin.tests.components.datefield.DateTimeFieldZoneIdFutureSummerDates.ZONE_ID;
  8. import static org.junit.Assert.assertTrue;
  9. import java.time.LocalDate;
  10. import java.time.LocalDateTime;
  11. import java.time.Month;
  12. import java.util.Locale;
  13. import org.junit.Before;
  14. import org.junit.Test;
  15. import com.vaadin.testbench.elements.ComboBoxElement;
  16. import com.vaadin.testbench.elements.DateFieldElement;
  17. import com.vaadin.testbench.elements.DateTimeFieldElement;
  18. import com.vaadin.tests.tb3.SingleBrowserTest;
  19. public class DateTimeFieldZoneIdFutureSummerDatesTest
  20. extends SingleBrowserTest {
  21. private static final String TESTING_ZONE_ID = "CET";
  22. private static final String TESTING_LOCALE = Locale.US.toString();
  23. DateTimeFieldElement dateTimeFieldWithVariableRange;
  24. DateTimeFieldElement dateTimeFieldWithDefaultRange;
  25. DateFieldElement transitionsStartYear;
  26. DateFieldElement transitionsEndYear;
  27. ComboBoxElement zoneIdComboBox;
  28. ComboBoxElement localeIdComboBox;
  29. @Before
  30. public void init() {
  31. openTestURL();
  32. dateTimeFieldWithVariableRange = $(DateTimeFieldElement.class)
  33. .id(VARIABLE_RANGE_DATEFIELD_ID);
  34. dateTimeFieldWithDefaultRange = $(DateTimeFieldElement.class)
  35. .id(FIXED_RANGE_DATEFIELD_ID);
  36. transitionsStartYear = $(DateFieldElement.class)
  37. .id(START_YEAR_DATEFIELD_ID);
  38. transitionsEndYear = $(DateFieldElement.class).id(END_YEAR_DATEFIELD_ID);
  39. zoneIdComboBox = $(ComboBoxElement.class).id(ZONE_ID);
  40. zoneIdComboBox.selectByText(TESTING_ZONE_ID);
  41. localeIdComboBox = $(ComboBoxElement.class).id(LOCALE_ID);
  42. localeIdComboBox.selectByText(TESTING_LOCALE);
  43. }
  44. @Test
  45. public void dateTimeFieldWithCustomRangeShouldShowDSTWithinRange() {
  46. final int testingRangeCentralYear = LocalDate.now().getYear() + 50;
  47. final int testingRangeUpperYear = testingRangeCentralYear + 3;
  48. final int testingRangeLowerYear = testingRangeCentralYear - 3;
  49. transitionsEndYear.setDate(LocalDate.of(testingRangeUpperYear, 1, 1));
  50. transitionsStartYear.setDate(LocalDate.of(testingRangeLowerYear, 1, 1));
  51. LocalDateTime testingDateTime = LocalDateTime
  52. .of(testingRangeCentralYear, Month.JULY, 1, 0, 0);
  53. dateTimeFieldWithVariableRange.setDateTime(testingDateTime);
  54. assertEndsWith(dateTimeFieldWithVariableRange, "CEST");
  55. testingDateTime = LocalDateTime.of(testingRangeUpperYear, Month.JULY, 1,
  56. 0, 0);
  57. dateTimeFieldWithVariableRange.setDateTime(testingDateTime);
  58. assertEndsWith(dateTimeFieldWithVariableRange, "CEST");
  59. testingDateTime = LocalDateTime.of(testingRangeLowerYear, Month.JULY, 1,
  60. 0, 0);
  61. dateTimeFieldWithVariableRange.setDateTime(testingDateTime);
  62. assertEndsWith(dateTimeFieldWithVariableRange, "CEST");
  63. }
  64. @Test
  65. public void dateTimeFieldWithCustomRangeShouldNotShowDSTOutsideRange() {
  66. final int testingRangeCentralYear = LocalDate.now().getYear() + 50;
  67. final int testingRangeUpperYear = testingRangeCentralYear + 3;
  68. final int testingRangeLowerYear = testingRangeCentralYear - 3;
  69. transitionsEndYear.setDate(LocalDate.of(testingRangeUpperYear, 1, 1));
  70. transitionsStartYear.setDate(LocalDate.of(testingRangeLowerYear, 1, 1));
  71. // This year is out of specified range
  72. LocalDateTime testingDateTime = LocalDateTime
  73. .of(LocalDate.now().getYear(), Month.JULY, 1, 0, 0);
  74. dateTimeFieldWithVariableRange.setDateTime(testingDateTime);
  75. assertEndsWith(dateTimeFieldWithVariableRange, "CET");
  76. // One year after the specified range
  77. testingDateTime = LocalDateTime.of(testingRangeUpperYear + 1,
  78. Month.JULY, 1, 0, 0);
  79. dateTimeFieldWithVariableRange.setDateTime(testingDateTime);
  80. assertEndsWith(dateTimeFieldWithVariableRange, "CET");
  81. // One year before the specified range
  82. testingDateTime = LocalDateTime.of(testingRangeLowerYear - 1,
  83. Month.JULY, 1, 0, 0);
  84. dateTimeFieldWithVariableRange.setDateTime(testingDateTime);
  85. assertEndsWith(dateTimeFieldWithVariableRange, "CET");
  86. }
  87. @Test
  88. public void dateTimeFieldWithDefaultRangeShouldShowDSTFrom1980Until20FutureYears() {
  89. // The 1980 to 20 future years range is the hard-coded default range
  90. // for which DST is shown if user doesn't provide a custom range
  91. final int testingRangeLowerYear = 1980;
  92. LocalDateTime testingDateTime = LocalDateTime.of(testingRangeLowerYear,
  93. Month.JULY, 1, 0, 0);
  94. dateTimeFieldWithDefaultRange.setDateTime(testingDateTime);
  95. assertEndsWith(dateTimeFieldWithDefaultRange, "CEST");
  96. final int testingRangeUpperYear = LocalDate.now().getYear() + 20;
  97. testingDateTime = LocalDateTime.of(testingRangeUpperYear, Month.JULY, 1,
  98. 0, 0);
  99. dateTimeFieldWithDefaultRange.setDateTime(testingDateTime);
  100. assertEndsWith(dateTimeFieldWithDefaultRange, "CEST");
  101. final int testingCurrYear = LocalDate.now().getYear();
  102. testingDateTime = LocalDateTime.of(testingCurrYear, Month.JULY, 1, 0,
  103. 0);
  104. dateTimeFieldWithDefaultRange.setDateTime(testingDateTime);
  105. assertEndsWith(dateTimeFieldWithDefaultRange, "CEST");
  106. }
  107. @Test
  108. public void dateTimeFieldWithDefaultRangeShouldNotShowDSTBefore1980() {
  109. final LocalDateTime testingDateTime = LocalDateTime.of(1979, Month.JULY,
  110. 1, 0, 0);
  111. dateTimeFieldWithDefaultRange.setDateTime(testingDateTime);
  112. assertEndsWith(dateTimeFieldWithDefaultRange, "CET");
  113. }
  114. @Test
  115. public void dateTimeFieldWithDefaultRangeShouldNotShowDSTAfter20FutureYears() {
  116. final LocalDateTime testingDateTime = LocalDateTime
  117. .of(LocalDate.now().getYear() + 21, Month.JULY, 1, 0, 0);
  118. dateTimeFieldWithDefaultRange.setDateTime(testingDateTime);
  119. assertEndsWith(dateTimeFieldWithDefaultRange, "CET");
  120. }
  121. private void assertEndsWith(DateTimeFieldElement element, String suffix) {
  122. final String text = element.getValue();
  123. assertTrue(text + " should end with " + suffix, text.endsWith(suffix));
  124. }
  125. }