You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TreeDeclarativeTest.java 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package com.vaadin.tests.server.component.tree;
  2. import java.io.ByteArrayInputStream;
  3. import static org.junit.Assert.assertArrayEquals;
  4. import static org.junit.Assert.assertTrue;
  5. import org.junit.Test;
  6. import com.vaadin.data.SelectionModel;
  7. import com.vaadin.data.TreeData;
  8. import com.vaadin.data.provider.HierarchicalQuery;
  9. import com.vaadin.shared.ui.ContentMode;
  10. import com.vaadin.tests.data.bean.Person;
  11. import com.vaadin.tests.server.component.abstractcomponent.AbstractComponentDeclarativeTestBase;
  12. import com.vaadin.ui.Grid.SelectionMode;
  13. import com.vaadin.ui.IconGenerator;
  14. import com.vaadin.ui.ItemCaptionGenerator;
  15. import com.vaadin.ui.Tree;
  16. import com.vaadin.ui.declarative.Design;
  17. public class TreeDeclarativeTest
  18. extends AbstractComponentDeclarativeTestBase<Tree> {
  19. @Test
  20. public void dataSerialization() {
  21. Person person1 = createPerson("a");
  22. Person person2 = createPerson("a/a");
  23. Person person3 = createPerson("a/b");
  24. Person person4 = createPerson("a/b/c");
  25. Person person5 = createPerson("b");
  26. TreeData<Person> data = new TreeData<>();
  27. data.addItems(null, person1, person5);
  28. data.addItems(person1, person2, person3);
  29. data.addItem(person3, person4);
  30. Tree<Person> tree = new Tree<>();
  31. tree.setTreeData(data);
  32. tree.setItemCaptionGenerator(item -> item.getFirstName());
  33. String designString = String.format(
  34. "<%s>" + "<node item='%s'>%s</node>"
  35. + "<node item='%s' parent='%s'>%s</node>"
  36. + "<node item='%s' parent='%s'>%s</node>"
  37. + "<node item='%s' parent='%s'>%s</node>"
  38. + "<node item='%s'>%s</node>" + "</%s>",
  39. getComponentTag(), person1.toString(), person1.getFirstName(),
  40. person2.toString(), person1.toString(), person2.getFirstName(),
  41. person3.toString(), person1.toString(), person3.getFirstName(),
  42. person4.toString(), person3.toString(), person4.getFirstName(),
  43. person5.toString(), person5.getFirstName(), getComponentTag());
  44. testWrite(designString, tree, true);
  45. Tree<String> readTree = testRead(designString, tree);
  46. assertEquals(2, readTree.getDataProvider()
  47. .getChildCount(new HierarchicalQuery<>(null, null)));
  48. assertEquals(2, readTree.getDataProvider().getChildCount(
  49. new HierarchicalQuery<>(null, person1.toString())));
  50. assertEquals(1, readTree.getDataProvider().getChildCount(
  51. new HierarchicalQuery<>(null, person3.toString())));
  52. }
  53. @Test
  54. public void htmlContentMode() {
  55. Person person = createPerson("A Person");
  56. Tree<Person> tree = new Tree<>();
  57. tree.setItems(person);
  58. tree.setItemCaptionGenerator(
  59. item -> String.format("<b>%s</b>", item.getFirstName()));
  60. tree.setContentMode(ContentMode.HTML);
  61. String designString = String.format(
  62. "<%s content-mode='html'><node item='%s'><b>%s</b></node></%s>",
  63. getComponentTag(), person.toString(), person.getFirstName(),
  64. getComponentTag());
  65. testWrite(designString, tree, true);
  66. testRead(designString, tree);
  67. }
  68. @Test
  69. public void selectionMode() {
  70. Tree<Person> tree = new Tree<>();
  71. tree.setSelectionMode(SelectionMode.MULTI);
  72. String designString = String.format("<%s selection-mode='multi'></%s>",
  73. getComponentTag(), getComponentTag());
  74. testRead(designString, tree);
  75. testWrite(designString, tree, false);
  76. }
  77. @Test
  78. @Override
  79. public void heightFullDeserialization()
  80. throws InstantiationException, IllegalAccessException {
  81. // width is full by default
  82. String design = String.format("<%s size-full/>", getComponentTag());
  83. Tree<String> tree = new Tree<>();
  84. tree.setHeight("100%");
  85. testRead(design, tree);
  86. testWrite(design, tree);
  87. }
  88. @Test
  89. @Override
  90. public void sizeUndefinedDeserialization()
  91. throws InstantiationException, IllegalAccessException {
  92. String design = String.format("<%s size-auto/>", getComponentTag());
  93. Tree<String> tree = new Tree<>();
  94. tree.setSizeUndefined();
  95. testRead(design, tree);
  96. testWrite(design, tree);
  97. }
  98. @Test
  99. @Override
  100. public void widthFullDeserialization()
  101. throws InstantiationException, IllegalAccessException {
  102. // width is full by default
  103. String design = String.format("<%s/>", getComponentTag());
  104. Tree<String> tree = new Tree<>();
  105. tree.setWidth("100%");
  106. testRead(design, tree);
  107. testWrite(design, tree);
  108. }
  109. @Test
  110. @Override
  111. public void widthUndefinedDeserialization()
  112. throws InstantiationException, IllegalAccessException {
  113. String design = String.format("<%s size-auto/>", getComponentTag());
  114. Tree<String> tree = new Tree<>();
  115. tree.setWidthUndefined();
  116. testRead(design, tree);
  117. testWrite(design, tree);
  118. }
  119. @Test
  120. public void testUpdateExisting() {
  121. Tree tree = new Tree();
  122. String treeDesign = "<vaadin-tree selection-mode=\"MULTI\">"
  123. + "<node item=\"A\">A</node>" + "<node item=\"B\">B</node>"
  124. + "<node item=\"AA\" parent=\"A\">AA</node>" + "</vaadin-tree>";
  125. Design.read(new ByteArrayInputStream(treeDesign.getBytes()), tree);
  126. Object[] items = tree.getDataProvider()
  127. .fetchChildren(new HierarchicalQuery(null, null)).toArray();
  128. assertArrayEquals(new Object[] { "A", "B" }, items);
  129. Object[] itemsA = tree.getDataProvider()
  130. .fetchChildren(new HierarchicalQuery(null, "A")).toArray();
  131. assertArrayEquals(new Object[] { "AA" }, itemsA);
  132. long countB = tree.getDataProvider()
  133. .fetchChildren(new HierarchicalQuery(null, "B")).count();
  134. assertEquals(0L, countB);
  135. assertTrue(tree.getSelectionModel() instanceof SelectionModel.Multi);
  136. }
  137. @Override
  138. protected String getComponentTag() {
  139. return "vaadin-tree";
  140. }
  141. @Override
  142. protected Class<? extends Tree> getComponentClass() {
  143. return Tree.class;
  144. }
  145. @Override
  146. protected void assertEquals(String message, Object o1, Object o2) {
  147. if (o1 instanceof ItemCaptionGenerator) {
  148. assertTrue(o2 instanceof ItemCaptionGenerator);
  149. return;
  150. }
  151. if (o1 instanceof IconGenerator) {
  152. assertTrue(o2 instanceof IconGenerator);
  153. return;
  154. }
  155. super.assertEquals(message, o1, o2);
  156. }
  157. private Person createPerson(String name) {
  158. Person person = new Person();
  159. person.setFirstName(name);
  160. return person;
  161. }
  162. }