package com.vaadin.tests.server.component.treegrid; import java.lang.reflect.InvocationTargetException; import org.junit.Assert; import com.vaadin.data.HierarchyData; import com.vaadin.data.provider.HierarchicalQuery; import com.vaadin.data.provider.InMemoryHierarchicalDataProvider; import com.vaadin.tests.data.bean.Person; import com.vaadin.tests.server.component.abstractlisting.AbstractListingDeclarativeTest; import com.vaadin.ui.TreeGrid; public class TreeGridDeclarativeTest extends AbstractListingDeclarativeTest<TreeGrid> { @SuppressWarnings("unchecked") @Override public void dataSerialization() throws InstantiationException, IllegalAccessException, InvocationTargetException { TreeGrid<Person> grid = new TreeGrid<>(); Person person1 = createPerson("a", "last-name"); Person person2 = createPerson("aa", "last-name"); Person person3 = createPerson("ab", "last-name"); Person person4 = createPerson("b", "last-name"); Person person5 = createPerson("c", "last-name"); Person person6 = createPerson("ca", "last-name"); Person person7 = createPerson("caa", "last-name"); HierarchyData<Person> data = new HierarchyData<>(); data.addItems(null, person1, person4, person5); data.addItems(person1, person2, person3); data.addItem(person5, person6); data.addItem(person6, person7); grid.addColumn(Person::getFirstName).setCaption("First Name"); grid.addColumn(Person::getLastName).setId("id").setCaption("Id"); grid.setHierarchyColumn("id"); grid.setDataProvider(new InMemoryHierarchicalDataProvider<>(data)); String design = String.format( "<%s hierarchy-column='id'><table><colgroup>" + "<col column-id='column0' sortable>" + "<col column-id='id' sortable></colgroup><thead>" + "<tr default><th plain-text column-ids='column0'>First Name</th>" + "<th plain-text column-ids='id'>Id</th></tr>" + "</thead><tbody>" + "<tr item='%s'><td>%s</td><td>%s</td></tr>" + "<tr item='%s' parent='%s'><td>%s</td><td>%s</td></tr>" + "<tr item='%s' parent='%s'><td>%s</td><td>%s</td></tr>" + "<tr item='%s'><td>%s</td><td>%s</td></tr>" + "<tr item='%s'><td>%s</td><td>%s</td></tr>" + "<tr item='%s' parent='%s'><td>%s</td><td>%s</td></tr>" + "<tr item='%s' parent='%s'><td>%s</td><td>%s</td></tr>" + "</tbody></table></%s>", getComponentTag(), person1.toString(), person1.getFirstName(), person1.getLastName(), person2.toString(), person1.toString(), person2.getFirstName(), person2.getLastName(), person3.toString(), person1.toString(), person3.getFirstName(), person3.getLastName(), person4.toString(), person4.getFirstName(), person4.getLastName(), person5.toString(), person5.getFirstName(), person5.getLastName(), person6.toString(), person5.toString(), person6.getFirstName(), person6.getLastName(), person7.toString(), person6.toString(), person7.getFirstName(), person7.getLastName(), getComponentTag()); TreeGrid<String> readGrid = testRead(design, grid); Assert.assertEquals(3, readGrid.getDataProvider() .size(new HierarchicalQuery<>(null, null))); Assert.assertEquals(2, readGrid.getDataProvider() .size(new HierarchicalQuery<>(null, person1.toString()))); Assert.assertEquals(1, readGrid.getDataProvider() .size(new HierarchicalQuery<>(null, person5.toString()))); Assert.assertEquals(1, readGrid.getDataProvider() .size(new HierarchicalQuery<>(null, person6.toString()))); testWrite(design, grid, true); } @Override public void valueSerialization() throws InstantiationException, IllegalAccessException, InvocationTargetException { // Tested by GridDeclarativeTest } @Override public void readOnlySelection() throws InstantiationException, IllegalAccessException, InvocationTargetException { // Tested by GridDeclarativeTest } @Override protected String getComponentTag() { return "vaadin-tree-grid"; } @Override protected Class<? extends TreeGrid> getComponentClass() { return TreeGrid.class; } private Person createPerson(String name, String lastName) { Person person = new Person() { @Override public String toString() { return getFirstName() + " " + getLastName(); } }; person.setFirstName(name); person.setLastName(lastName); return person; } }