aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/test/java/com
diff options
context:
space:
mode:
authorTatu Lund <tatu@vaadin.com>2020-04-21 11:38:19 +0300
committerGitHub <noreply@github.com>2020-04-21 11:38:19 +0300
commitd35bd4cde4ae0074d68c7e1f10f2be8757403cc7 (patch)
tree3b9765e462e939150715b9c037d4297a9ed911f2 /server/src/test/java/com
parent565eeb5b5a85e6ce6310e0098977f853869f01ba (diff)
downloadvaadin-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.java79
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