diff options
author | Tatu Lund <tatu@vaadin.com> | 2020-04-21 11:38:19 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 11:38:19 +0300 |
commit | d35bd4cde4ae0074d68c7e1f10f2be8757403cc7 (patch) | |
tree | 3b9765e462e939150715b9c037d4297a9ed911f2 /server/src/test/java/com | |
parent | 565eeb5b5a85e6ce6310e0098977f853869f01ba (diff) | |
download | vaadin-framework-d35bd4cde4ae0074d68c7e1f10f2be8757403cc7.tar.gz vaadin-framework-d35bd4cde4ae0074d68c7e1f10f2be8757403cc7.zip |
Add methods to control validation (#11945)
- Enable / disable all validators on Binder level
- Enable / disable validators on Binding level
- add writeBeanAsDraft(bean,boolean) for writing draft bean with validators disabled
Fixes https://github.com/vaadin/framework/issues/10709
Co-authored-by: Zhe Sun <31067185+ZheSun88@users.noreply.github.com>
Diffstat (limited to 'server/src/test/java/com')
-rw-r--r-- | server/src/test/java/com/vaadin/data/BinderTest.java | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/server/src/test/java/com/vaadin/data/BinderTest.java b/server/src/test/java/com/vaadin/data/BinderTest.java index b3fe5a8194..b64dee9c6b 100644 --- a/server/src/test/java/com/vaadin/data/BinderTest.java +++ b/server/src/test/java/com/vaadin/data/BinderTest.java @@ -274,8 +274,11 @@ public class BinderTest extends BinderTestBase<Binder<Person>, Person> { 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"); + if (value.equals("Mike")) { + return ValidationResult.ok(); + } else { + return ValidationResult.error("value must be Mike"); + } }) .bind(Person::getFirstName, Person::setFirstName); binder.forField(ageField) @@ -300,6 +303,78 @@ public class BinderTest extends BinderTestBase<Binder<Person>, Person> { // age is written to draft even if firstname validation // fails assertEquals(age, person.getAge()); + + binder.writeBeanAsDraft(person,true); + // name is now written despite validation as write was forced + assertEquals(fieldValue, person.getFirstName()); + } + + @Test + public void save_bound_bean_disable_validation_binding() throws ValidationException { + Binder<Person> binder = new Binder<>(); + Binding<Person, String> nameBinding = 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"); + + nameBinding.setValidatorsDisabled(true); + binder.writeBean(person); + + // name is now written as validation was disabled + assertEquals(fieldValue, person.getFirstName()); + assertEquals(age, person.getAge()); + } + + @Test + public void save_bound_bean_disable_validation_binder() throws ValidationException { + 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.setValidatorsDisabled(true); + binder.writeBean(person); + + // name is now written as validation was disabled + assertEquals(fieldValue, person.getFirstName()); + assertEquals(age, person.getAge()); } @Test |