aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/test')
-rw-r--r--server/src/test/java/com/vaadin/data/BinderTest.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/server/src/test/java/com/vaadin/data/BinderTest.java b/server/src/test/java/com/vaadin/data/BinderTest.java
index ef52ea8ef5..0163b65b51 100644
--- a/server/src/test/java/com/vaadin/data/BinderTest.java
+++ b/server/src/test/java/com/vaadin/data/BinderTest.java
@@ -11,6 +11,7 @@ import static org.junit.Assert.assertTrue;
import java.util.Locale;
import java.util.Objects;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
@@ -1125,4 +1126,28 @@ public class BinderTest extends BinderTestBase<Binder<Person>, Person> {
assertEquals(fiError,
ageField.getErrorMessage().getFormattedHtmlMessage());
}
+
+ @Test
+ public void valueChangeListenerOrder() {
+ AtomicBoolean beanSet = new AtomicBoolean();
+ nameField.addValueChangeListener(e -> {
+ if (!beanSet.get()) {
+ assertEquals("Value in bean updated earlier than expected",
+ e.getOldValue(), item.getFirstName());
+ }
+ });
+ binder.bind(nameField, Person::getFirstName, Person::setFirstName);
+ nameField.addValueChangeListener(e -> {
+ if (!beanSet.get()) {
+ assertEquals("Value in bean not updated when expected",
+ e.getValue(), item.getFirstName());
+ }
+ });
+
+ beanSet.set(true);
+ binder.setBean(item);
+ beanSet.set(false);
+
+ nameField.setValue("Foo");
+ }
}