aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/test/java
diff options
context:
space:
mode:
authorAnna Koskinen <Ansku@users.noreply.github.com>2021-01-22 13:08:02 +0200
committerGitHub <noreply@github.com>2021-01-22 13:08:02 +0200
commitb4f011230fd5c9d56a0dd7ad7c00c584e25ee990 (patch)
treeec2f885c3cc2ea200b3405703b1ef9d3cbb8bb7c /server/src/test/java
parentf790ba970d49cfe5c50a3b28d099227af8fcc4a6 (diff)
downloadvaadin-framework-b4f011230fd5c9d56a0dd7ad7c00c584e25ee990.tar.gz
vaadin-framework-b4f011230fd5c9d56a0dd7ad7c00c584e25ee990.zip
DateField value should actively adjust to the set resolution. (#12183)7.7.23
Diffstat (limited to 'server/src/test/java')
-rw-r--r--server/src/test/java/com/vaadin/tests/data/converter/LocalDateTimeToDateConverterTest.java11
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/abstractdatefield/AbstractLocalDateTimeFieldDeclarativeTest.java16
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java32
3 files changed, 51 insertions, 8 deletions
diff --git a/server/src/test/java/com/vaadin/tests/data/converter/LocalDateTimeToDateConverterTest.java b/server/src/test/java/com/vaadin/tests/data/converter/LocalDateTimeToDateConverterTest.java
index 6851761cfc..a9dca56c15 100644
--- a/server/src/test/java/com/vaadin/tests/data/converter/LocalDateTimeToDateConverterTest.java
+++ b/server/src/test/java/com/vaadin/tests/data/converter/LocalDateTimeToDateConverterTest.java
@@ -14,6 +14,7 @@ import com.vaadin.data.Binder;
import com.vaadin.data.ValidationException;
import com.vaadin.data.ValueContext;
import com.vaadin.data.converter.LocalDateTimeToDateConverter;
+import com.vaadin.shared.ui.datefield.DateTimeResolution;
import com.vaadin.ui.DateTimeField;
public class LocalDateTimeToDateConverterTest extends AbstractConverterTest {
@@ -59,7 +60,15 @@ public class LocalDateTimeToDateConverterTest extends AbstractConverterTest {
BeanWithDate bean = new BeanWithDate();
binder.writeBean(bean);
- assertEquals(DATE, bean.getDate());
+ assertEquals(DateTimeResolution.MINUTE, dateField.getResolution());
+
+ // create a comparison date that matches the resolution
+ Calendar calendar = Calendar
+ .getInstance(TimeZone.getTimeZone(ZoneOffset.UTC));
+ calendar.clear();
+ calendar.set(2017, Calendar.JANUARY, 1, 1, 1, 0);
+ Date date = calendar.getTime();
+ assertEquals(date, bean.getDate());
}
public static class BeanWithDate {
diff --git a/server/src/test/java/com/vaadin/tests/server/component/abstractdatefield/AbstractLocalDateTimeFieldDeclarativeTest.java b/server/src/test/java/com/vaadin/tests/server/component/abstractdatefield/AbstractLocalDateTimeFieldDeclarativeTest.java
index d4d2c397b7..de6dc322ad 100644
--- a/server/src/test/java/com/vaadin/tests/server/component/abstractdatefield/AbstractLocalDateTimeFieldDeclarativeTest.java
+++ b/server/src/test/java/com/vaadin/tests/server/component/abstractdatefield/AbstractLocalDateTimeFieldDeclarativeTest.java
@@ -25,15 +25,19 @@ import com.vaadin.ui.AbstractLocalDateTimeField;
public abstract class AbstractLocalDateTimeFieldDeclarativeTest<T extends AbstractLocalDateTimeField>
extends AbstractFieldDeclarativeTest<T, LocalDateTime> {
- protected DateTimeFormatter DATE_FORMATTER = DateTimeFormatter
- .ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
+ // field initialised with DateTimeResolution.MINUTE, seconds get truncated
+ protected DateTimeFormatter VALUE_DATE_FORMATTER = DateTimeFormatter
+ .ofPattern("yyyy-MM-dd HH:mm:00", Locale.ROOT);
+ // only field value conforms to resolution, range keeps the initial values
+ protected DateTimeFormatter RANGE_DATE_FORMATTER = DateTimeFormatter
+ .ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
@Override
public void valueDeserialization()
throws InstantiationException, IllegalAccessException {
LocalDateTime value = LocalDateTime.of(2003, 02, 27, 10, 37, 43);
String design = String.format("<%s value='%s'/>", getComponentTag(),
- DATE_FORMATTER.format(value));
+ VALUE_DATE_FORMATTER.format(value));
T component = getComponentClass().newInstance();
component.setValue(value);
@@ -57,8 +61,8 @@ public abstract class AbstractLocalDateTimeFieldDeclarativeTest<T extends Abstra
"<%s show-iso-week-numbers range-end='%s' range-start='%s' "
+ "date-out-of-range-message='%s' resolution='%s' "
+ "date-format='%s' lenient parse-error-message='%s'/>",
- getComponentTag(), DATE_FORMATTER.format(end),
- DATE_FORMATTER.format(start), dateOutOfRange,
+ getComponentTag(), RANGE_DATE_FORMATTER.format(end),
+ RANGE_DATE_FORMATTER.format(start), dateOutOfRange,
resolution.name().toLowerCase(Locale.ROOT), dateFormat,
parseErrorMsg);
@@ -82,7 +86,7 @@ public abstract class AbstractLocalDateTimeFieldDeclarativeTest<T extends Abstra
throws InstantiationException, IllegalAccessException {
LocalDateTime value = LocalDateTime.of(2003, 02, 27, 23, 12, 34);
String design = String.format("<%s value='%s' readonly/>",
- getComponentTag(), DATE_FORMATTER.format(value));
+ getComponentTag(), VALUE_DATE_FORMATTER.format(value));
T component = getComponentClass().newInstance();
component.setValue(value);
diff --git a/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java b/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java
index 91d7384421..da7306e025 100644
--- a/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java
+++ b/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java
@@ -1,12 +1,14 @@
package com.vaadin.tests.server.component.datefield;
import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.util.Date;
import java.util.Map;
import org.junit.Test;
+import com.vaadin.data.validator.DateTimeRangeValidator;
import com.vaadin.data.validator.RangeValidator;
import com.vaadin.event.FieldEvents.BlurEvent;
import com.vaadin.event.FieldEvents.BlurListener;
@@ -39,7 +41,9 @@ public class DateFieldListenersTest extends AbstractListenerMethodsTestBase {
@Override
protected RangeValidator<LocalDateTime> getRangeValidator() {
- return null;
+ return new DateTimeRangeValidator(getDateOutOfRangeMessage(),
+ adjustToResolution(getRangeStart(), getResolution()),
+ adjustToResolution(getRangeEnd(), getResolution()));
}
@Override
@@ -61,6 +65,32 @@ public class DateFieldListenersTest extends AbstractListenerMethodsTestBase {
protected LocalDateTime toType(TemporalAccessor temporalAccessor) {
return LocalDateTime.from(temporalAccessor);
}
+
+ @Override
+ protected LocalDateTime adjustToResolution(LocalDateTime date,
+ DateTimeResolution forResolution) {
+ if (date == null) {
+ return null;
+ }
+ switch (forResolution) {
+ case YEAR:
+ return date.withDayOfYear(1).toLocalDate().atStartOfDay();
+ case MONTH:
+ return date.withDayOfMonth(1).toLocalDate().atStartOfDay();
+ case DAY:
+ return date.toLocalDate().atStartOfDay();
+ case HOUR:
+ return date.truncatedTo(ChronoUnit.HOURS);
+ case MINUTE:
+ return date.truncatedTo(ChronoUnit.MINUTES);
+ case SECOND:
+ return date.truncatedTo(ChronoUnit.SECONDS);
+ default:
+ assert false : "Unexpected resolution argument "
+ + forResolution;
+ return null;
+ }
+ }
}
@Test