diff options
Diffstat (limited to 'server/src/test')
-rw-r--r-- | server/src/test/java/com/vaadin/data/BinderTest.java | 25 |
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"); + } } |