From 4253a856db41e1eaf4c78f18422b00ea2d15344f Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Mon, 19 Dec 2011 16:01:26 +0200 Subject: [PATCH] Test for form with nested properties --- .../AbstractBeanFieldBinderTest.java | 96 +++++++++++++++++++ .../fieldbinder/FormWithNestedProperties.java | 68 +++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 tests/testbench/com/vaadin/tests/fieldbinder/AbstractBeanFieldBinderTest.java create mode 100644 tests/testbench/com/vaadin/tests/fieldbinder/FormWithNestedProperties.java diff --git a/tests/testbench/com/vaadin/tests/fieldbinder/AbstractBeanFieldBinderTest.java b/tests/testbench/com/vaadin/tests/fieldbinder/AbstractBeanFieldBinderTest.java new file mode 100644 index 0000000000..b35d85995c --- /dev/null +++ b/tests/testbench/com/vaadin/tests/fieldbinder/AbstractBeanFieldBinderTest.java @@ -0,0 +1,96 @@ +package com.vaadin.tests.fieldbinder; + +import com.vaadin.data.fieldbinder.BeanFieldBinder; +import com.vaadin.data.fieldbinder.FieldBinder.CommitException; +import com.vaadin.tests.components.TestBase; +import com.vaadin.tests.util.Log; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.Root; + +public abstract class AbstractBeanFieldBinderTest extends TestBase { + + private Button commitButton; + protected Log log = new Log(5); + + private Button discardButton; + private Button showBeanButton; + private BeanFieldBinder fieldBinder; + + @Override + protected void setup() { + addComponent(log); + } + + protected Button getDiscardButton() { + if (discardButton == null) { + discardButton = new Button("Discard", new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + getFieldBinder().discard(); + log.log("Discarded changes"); + + } + }); + } + return discardButton; + } + + protected Button getShowBeanButton() { + if (showBeanButton == null) { + showBeanButton = new Button("Show bean values", + new Button.ClickListener() { + + public void buttonClick(ClickEvent event) { + log.log(getFieldBinder().getItemDataSource() + .getBean().toString()); + + } + }); + } + return showBeanButton; + } + + protected Button getCommitButton() { + if (commitButton == null) { + commitButton = new Button("Commit"); + commitButton.addListener(new ClickListener() { + + public void buttonClick(ClickEvent event) { + String msg = "Commit succesful"; + try { + getFieldBinder().commit(); + } catch (CommitException e) { + msg = "Commit failed: " + e.getMessage(); + } + Root.getCurrentRoot().showNotification(msg); + log.log(msg); + + } + }); + } + return commitButton; + } + + protected BeanFieldBinder getFieldBinder() { + return fieldBinder; + } + + protected void setFieldBinder(BeanFieldBinder beanFieldBinder) { + fieldBinder = beanFieldBinder; + } + + @Override + protected String getDescription() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/tests/testbench/com/vaadin/tests/fieldbinder/FormWithNestedProperties.java b/tests/testbench/com/vaadin/tests/fieldbinder/FormWithNestedProperties.java new file mode 100644 index 0000000000..0d29cc3004 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/fieldbinder/FormWithNestedProperties.java @@ -0,0 +1,68 @@ +package com.vaadin.tests.fieldbinder; + +import com.vaadin.data.fieldbinder.BeanFieldBinder; +import com.vaadin.data.fieldbinder.FormBuilder; +import com.vaadin.data.fieldbinder.PropertyId; +import com.vaadin.tests.data.bean.Address; +import com.vaadin.tests.data.bean.Country; +import com.vaadin.tests.data.bean.Person; +import com.vaadin.tests.data.bean.Sex; +import com.vaadin.tests.util.Log; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.TextField; + +public class FormWithNestedProperties extends AbstractBeanFieldBinderTest { + + private Log log = new Log(5); + + private TextField firstName = new TextField("First name"); + private TextField lastName = new TextField("Last name"); + private TextField email = new TextField("Email"); + private TextField age = new TextField("Age"); + + @PropertyId("address.streetAddress") + private TextField streetAddress = new TextField("Street address"); + private NativeSelect country; + + private CheckBox deceased = new CheckBox("Deceased"); + + @Override + protected void setup() { + super.setup(); + + setFieldBinder(new BeanFieldBinder(Person.class)); + getFieldBinder().bindFields(this); + country = new FormBuilder(getFieldBinder()).buildAndBind("country", + "address.country", NativeSelect.class); + addComponent(firstName); + addComponent(lastName); + addComponent(streetAddress); + addComponent(country); + addComponent(email); + addComponent(age); + addComponent(deceased); + addComponent(getCommitButton()); + addComponent(getDiscardButton()); + addComponent(getShowBeanButton()); + + getFieldBinder().setItemDataSource( + new Person("First", "Last", "Email", 52, Sex.FEMALE, + new Address("street address", 01234, "City", + Country.FINLAND))); + + } + + @Override + protected String getDescription() { + // TODO Auto-generated method stub + return null; + } + + @Override + protected Integer getTicketNumber() { + // TODO Auto-generated method stub + return null; + } + +} -- 2.39.5