package com.vaadin.v7.tests.server.component.fieldgroup; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.vaadin.ui.FormLayout; import com.vaadin.v7.data.fieldgroup.FieldGroup; import com.vaadin.v7.data.util.ObjectProperty; import com.vaadin.v7.data.util.PropertysetItem; import com.vaadin.v7.ui.TextField; public class CaseInsensitiveBindingTest { @Test public void caseInsensitivityAndUnderscoreRemoval() { PropertysetItem item = new PropertysetItem(); item.addItemProperty("LastName", new ObjectProperty<String>("Sparrow")); class MyForm extends FormLayout { TextField lastName = new TextField("Last name"); public MyForm() { // Should bind to the LastName property addComponent(lastName); } } MyForm form = new MyForm(); FieldGroup binder = new FieldGroup(item); binder.bindMemberFields(form); assertTrue("Sparrow".equals(form.lastName.getValue())); } @Test public void UnderscoreRemoval() { PropertysetItem item = new PropertysetItem(); item.addItemProperty("first_name", new ObjectProperty<String>("Jack")); class MyForm extends FormLayout { TextField firstName = new TextField("First name"); public MyForm() { // Should bind to the first_name property addComponent(firstName); } } MyForm form = new MyForm(); FieldGroup binder = new FieldGroup(item); binder.bindMemberFields(form); assertTrue("Jack".equals(form.firstName.getValue())); } @Test public void perfectMatchPriority() { PropertysetItem item = new PropertysetItem(); item.addItemProperty("first_name", new ObjectProperty<String>("Not this")); item.addItemProperty("firstName", new ObjectProperty<String>("This")); class MyForm extends FormLayout { TextField firstName = new TextField("First name"); public MyForm() { // should bind to the firstName property, not first_name // property addComponent(firstName); } } MyForm form = new MyForm(); FieldGroup binder = new FieldGroup(item); binder.bindMemberFields(form); assertTrue("This".equals(form.firstName.getValue())); } }