diff options
author | Artur Signell <artur@vaadin.com> | 2015-01-27 19:47:51 +0200 |
---|---|---|
committer | Henrik Paul <henrik@vaadin.com> | 2015-02-03 12:03:56 +0000 |
commit | 9cac6602821383dc2e03607066c0ea7ec7d01af7 (patch) | |
tree | 24b7239135eff169429f9e4549742fc7a6a2066e /server/tests/src | |
parent | 04d52c41f48c9e8811a9d03c7ae0204e73f1bde2 (diff) | |
download | vaadin-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.java | 94 |
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; + } + } + } |