summaryrefslogtreecommitdiffstats
path: root/server/tests/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-01-27 19:47:51 +0200
committerHenrik Paul <henrik@vaadin.com>2015-02-03 12:03:56 +0000
commit9cac6602821383dc2e03607066c0ea7ec7d01af7 (patch)
tree24b7239135eff169429f9e4549742fc7a6a2066e /server/tests/src
parent04d52c41f48c9e8811a9d03c7ae0204e73f1bde2 (diff)
downloadvaadin-framework-9cac6602821383dc2e03607066c0ea7ec7d01af7.tar.gz
vaadin-framework-9cac6602821383dc2e03607066c0ea7ec7d01af7.zip
Add methods for getting invalid fields from a FieldGroup (#13775)
* Method for retrieving all failing fields exceptions from a CommitException * Methods for handling commit errors in Grid (#16515) * Show editor row validation errors only on the fields (#16509) Change-Id: Iabef662579e4ccae3803a513205e46542c41cce2
Diffstat (limited to 'server/tests/src')
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/fieldgroup/FieldGroupTest.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/server/tests/src/com/vaadin/tests/server/component/fieldgroup/FieldGroupTest.java b/server/tests/src/com/vaadin/tests/server/component/fieldgroup/FieldGroupTest.java
index da86c83771..d77a2e190b 100644
--- a/server/tests/src/com/vaadin/tests/server/component/fieldgroup/FieldGroupTest.java
+++ b/server/tests/src/com/vaadin/tests/server/component/fieldgroup/FieldGroupTest.java
@@ -15,10 +15,23 @@
*/
package com.vaadin.tests.server.component.fieldgroup;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
import org.junit.Assert;
import org.junit.Test;
+import com.vaadin.data.Item;
+import com.vaadin.data.Property;
+import com.vaadin.data.Validator.InvalidValueException;
import com.vaadin.data.fieldgroup.FieldGroup;
+import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
+import com.vaadin.data.util.AbstractProperty;
+import com.vaadin.ui.Field;
import com.vaadin.ui.TextField;
/**
@@ -52,4 +65,85 @@ public class FieldGroupTest {
Assert.assertFalse("Field is not writable", field.isReadOnly());
}
+
+ @Test
+ public void commit_validationFailed_allValidationFailuresAvailable()
+ throws CommitException {
+ FieldGroup fieldGroup = new FieldGroup();
+
+ fieldGroup.setItemDataSource(new TestItem());
+
+ TextField field1 = new TextField();
+ field1.setRequired(true);
+ fieldGroup.bind(field1, "prop1");
+
+ TextField field2 = new TextField();
+ field2.setRequired(true);
+ fieldGroup.bind(field2, "prop2");
+
+ Set<TextField> set = new HashSet<TextField>(Arrays.asList(field1,
+ field2));
+
+ try {
+ fieldGroup.commit();
+ Assert.fail("No commit exception is thrown");
+ } catch (CommitException exception) {
+ Map<Field<?>, ? extends InvalidValueException> invalidFields = exception
+ .getInvalidFields();
+ for (Entry<Field<?>, ? extends InvalidValueException> entry : invalidFields
+ .entrySet()) {
+ set.remove(entry.getKey());
+ }
+ Assert.assertEquals(
+ "Some fields are not found in the invalid fields map", 0,
+ set.size());
+ Assert.assertEquals(
+ "Invalid value exception should be thrown for each field",
+ 2, invalidFields.size());
+ }
+ }
+
+ private static class TestItem implements Item {
+
+ @Override
+ public Property<String> getItemProperty(Object id) {
+ return new StringProperty();
+ }
+
+ @Override
+ public Collection<?> getItemPropertyIds() {
+ return Arrays.asList("prop1", "prop2");
+ }
+
+ @Override
+ public boolean addItemProperty(Object id, Property property)
+ throws UnsupportedOperationException {
+ return false;
+ }
+
+ @Override
+ public boolean removeItemProperty(Object id)
+ throws UnsupportedOperationException {
+ return false;
+ }
+
+ }
+
+ private static class StringProperty extends AbstractProperty<String> {
+
+ @Override
+ public String getValue() {
+ return null;
+ }
+
+ @Override
+ public void setValue(String newValue) throws Property.ReadOnlyException {
+ }
+
+ @Override
+ public Class<? extends String> getType() {
+ return String.class;
+ }
+ }
+
}