summaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/fieldgroup
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2014-12-09 19:43:06 +0200
committerVaadin Code Review <review@vaadin.com>2014-12-11 07:04:45 +0000
commitb91063f884108bfc69a617846d91263339b062fe (patch)
tree637ef197b4c18d5061b0890149ab53f44f3ff4e7 /uitest/src/com/vaadin/tests/fieldgroup
parent23bdb6e90d970bd4e9ef11c79c095e65b6963414 (diff)
downloadvaadin-framework-b91063f884108bfc69a617846d91263339b062fe.tar.gz
vaadin-framework-b91063f884108bfc69a617846d91263339b062fe.zip
Clear all bound fields when nulling the field group data source (#12371)
Change-Id: I48eb0e7851187fa6bbb9024730b2611a74501ad0
Diffstat (limited to 'uitest/src/com/vaadin/tests/fieldgroup')
-rw-r--r--uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java110
-rw-r--r--uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java68
2 files changed, 178 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java
new file mode 100644
index 0000000000..be0368f4ae
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrud.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.fieldgroup;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.data.fieldgroup.BeanFieldGroup;
+import com.vaadin.data.fieldgroup.PropertyId;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.util.Person;
+import com.vaadin.tests.util.PersonContainer;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+@Theme("valo")
+public class BasicCrud extends UI {
+
+ private Form form;
+
+ @Override
+ protected void init(VaadinRequest request) {
+ VerticalLayout main = new VerticalLayout();
+ main.setMargin(true);
+ main.setSpacing(true);
+ final Table t = new Table();
+ // t.setSelectionMode(SelectionMode.SINGLE);
+ t.setSelectable(true);
+
+ PersonContainer c = PersonContainer.createWithTestData();
+
+ c.addBean(new Person("first", "Last", "email", "phone", "street",
+ 12332, "Turku"));
+ c.addBean(new Person("Foo", "Bar", "me@some.where", "123",
+ "homestreet 12", 10000, "Glasgow"));
+ t.setContainerDataSource(c);
+ // t.removeColumn("address");
+ // t.setColumnOrder("firstName", "lastName", "email", "phoneNumber",
+ // "address.streetAddress", "address.postalCode", "address.city");
+ t.setVisibleColumns("firstName", "lastName", "email", "phoneNumber",
+ "address.streetAddress", "address.postalCode", "address.city");
+
+ // t.addSelectionChangeListener(new SelectionChangeListener() {
+ // @Override
+ // public void selectionChange(SelectionChangeEvent event) {
+ // form.edit((Person) t.getSelectedRow());
+ // }
+ // });
+ t.addValueChangeListener(new ValueChangeListener() {
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ form.edit((Person) t.getValue());
+ }
+ });
+
+ form = new Form();
+
+ t.setSizeFull();
+
+ main.setSizeFull();
+ main.addComponent(t);
+ main.addComponent(form);
+ main.setExpandRatio(t, 1);
+ setContent(main);
+ }
+
+ public static class Form extends HorizontalLayout {
+ private TextField firstName = new TextField("First name");
+ private TextField lastName = new TextField("Last name");
+ private TextField email = new TextField("E-mail");
+ @PropertyId("address.streetAddress")
+ private TextField streetAddress = new TextField("Street address");
+ @PropertyId("address.postalCode")
+ private TextField postalCode = new TextField("Postal code");
+
+ BeanFieldGroup<Person> fieldGroup = new BeanFieldGroup<Person>(
+ Person.class);
+
+ public Form() {
+ setSpacing(true);
+ setId("form");
+ fieldGroup.bindMemberFields(this);
+
+ // Stupid integer binding
+ postalCode.setNullRepresentation("");
+ addComponents(firstName, lastName, email, streetAddress, postalCode);
+ }
+
+ public void edit(Person p) {
+ fieldGroup.setItemDataSource(p);
+ }
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java
new file mode 100644
index 0000000000..a41725dbc9
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.fieldgroup;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.AbstractOrderedLayoutElement;
+import com.vaadin.testbench.elements.TableElement;
+import com.vaadin.testbench.elements.TextFieldElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class BasicCrudTest extends SingleBrowserTest {
+
+ @Test
+ public void fieldsInitiallyEmpty() {
+ openTestURL();
+ AbstractOrderedLayoutElement fieldsLayout = $(
+ AbstractOrderedLayoutElement.class).id("form");
+ List<TextFieldElement> textFields = fieldsLayout.$(
+ TextFieldElement.class).all();
+
+ for (TextFieldElement e : textFields) {
+ Assert.assertEquals("TextField should be empty", "", e.getValue());
+ }
+ }
+
+ @Test
+ public void fieldsClearedOnDeselect() {
+ openTestURL();
+ AbstractOrderedLayoutElement fieldsLayout = $(
+ AbstractOrderedLayoutElement.class).id("form");
+
+ // Select row
+ $(TableElement.class).first().getCell(2, 2).click();
+
+ List<TextFieldElement> textFields = fieldsLayout.$(
+ TextFieldElement.class).all();
+
+ for (TextFieldElement e : textFields) {
+ Assert.assertNotEquals("TextField should not be empty", "",
+ e.getValue());
+ }
+
+ // Deselect row
+ $(TableElement.class).first().getCell(2, 2).click();
+
+ for (TextFieldElement e : textFields) {
+ Assert.assertEquals("TextField should be empty", "", e.getValue());
+ }
+
+ }
+}