aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/test/java/com/vaadin/data
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/test/java/com/vaadin/data')
-rw-r--r--server/src/test/java/com/vaadin/data/BinderTest.java33
1 files changed, 33 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 3e27cc5f9b..401cc07017 100644
--- a/server/src/test/java/com/vaadin/data/BinderTest.java
+++ b/server/src/test/java/com/vaadin/data/BinderTest.java
@@ -270,6 +270,39 @@ public class BinderTest extends BinderTestBase<Binder<Person>, Person> {
}
@Test
+ public void save_bound_beanAsDraft() {
+ Binder<Person> binder = new Binder<>();
+ binder.forField(nameField)
+ .withValidator((value,context) -> {
+ if (value.equals("Mike")) return ValidationResult.ok();
+ else return ValidationResult.error("value must be Mike");
+ })
+ .bind(Person::getFirstName, Person::setFirstName);
+ binder.forField(ageField)
+ .withConverter(new StringToIntegerConverter(""))
+ .bind(Person::getAge, Person::setAge);
+
+ Person person = new Person();
+
+ String fieldValue = "John";
+ nameField.setValue(fieldValue);
+
+ int age = 10;
+ ageField.setValue("10");
+
+ person.setFirstName("Mark");
+
+ binder.writeBeanAsDraft(person);
+
+ // name is not written to draft as validation / conversion
+ // does not pass
+ assertNotEquals(fieldValue, person.getFirstName());
+ // age is written to draft even if firstname validation
+ // fails
+ assertEquals(age, person.getAge());
+ }
+
+ @Test
public void load_bound_fieldValueIsUpdated() {
binder.bind(nameField, Person::getFirstName, Person::setFirstName);