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.

GridSelectAllTest.java 8.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. package com.vaadin.tests.components.grid;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertFalse;
  4. import static org.junit.Assert.assertTrue;
  5. import org.junit.Test;
  6. import org.openqa.selenium.WebElement;
  7. import com.vaadin.testbench.By;
  8. import com.vaadin.testbench.elements.GridElement.GridCellElement;
  9. import com.vaadin.tests.components.grid.basics.GridBasicsTest;
  10. public class GridSelectAllTest extends GridBasicsTest {
  11. @Test
  12. public void testSelectAllCheckbox() {
  13. setSelectionModelMulti();
  14. GridCellElement header = getGridElement().getHeaderCell(0, 0);
  15. assertTrue("No checkbox", header.isElementPresent(By.tagName("input")));
  16. header.findElement(By.tagName("input")).click();
  17. for (int i = 0; i < GridBasicsTest.ROWS; i += 100) {
  18. assertTrue("Row " + i + " was not selected.",
  19. getGridElement().getRow(i).isSelected());
  20. }
  21. header.findElement(By.tagName("input")).click();
  22. assertFalse("Row 100 was still selected",
  23. getGridElement().getRow(100).isSelected());
  24. }
  25. @Test
  26. public void testSelectAllAndSort() {
  27. setSelectionModelMulti();
  28. GridCellElement header = getGridElement().getHeaderCell(0, 0);
  29. header.findElement(By.tagName("input")).click();
  30. getGridElement().getHeaderCell(0, 1).click();
  31. WebElement selectionBox = getGridElement().getCell(4, 0)
  32. .findElement(By.tagName("input"));
  33. selectionBox.click();
  34. selectionBox.click();
  35. assertFalse("Exception occurred on row reselection.", logContainsText(
  36. "Exception occurred, java.lang.IllegalStateException: No item id for key 101 found."));
  37. }
  38. @Test
  39. public void testSelectAllCheckboxWhenChangingModels() {
  40. GridCellElement header;
  41. header = getGridElement().getHeaderCell(0, 0);
  42. assertFalse(
  43. "Check box shouldn't have been in header for Single Selection Model",
  44. header.isElementPresent(By.tagName("input")));
  45. setSelectionModelMulti();
  46. header = getGridElement().getHeaderCell(0, 0);
  47. assertTrue("Multi Selection Model should have select all checkbox",
  48. header.isElementPresent(By.tagName("input")));
  49. setSelectionModelSingle();
  50. header = getGridElement().getHeaderCell(0, 0);
  51. assertFalse(
  52. "Check box shouldn't have been in header for Single Selection Model",
  53. header.isElementPresent(By.tagName("input")));
  54. // Single selection model shouldn't have selection column to begin with
  55. assertFalse(
  56. "Selection columnn shouldn't have been in grid for Single Selection Model",
  57. getGridElement().getCell(0, 1)
  58. .isElementPresent(By.tagName("input")));
  59. setSelectionModelSingle();
  60. header = getGridElement().getHeaderCell(0, 0);
  61. assertFalse(
  62. "Check box shouldn't have been in header for None Selection Model",
  63. header.isElementPresent(By.tagName("input")));
  64. }
  65. @Test
  66. public void testSelectAllCheckboxWithHeaderOperations() {
  67. setSelectionModelMulti();
  68. selectMenuPath("Component", "Header", "Prepend header row");
  69. assertEquals(2, getGridElement().getHeaderCount());
  70. selectMenuPath("Component", "Header", "Append header row");
  71. assertEquals(3, getGridElement().getHeaderCount());
  72. GridCellElement header = getGridElement().getHeaderCell(1, 0);
  73. assertTrue("Multi Selection Model should have select all checkbox",
  74. header.isElementPresent(By.tagName("input")));
  75. }
  76. @Test
  77. public void testSelectAllCheckboxAfterPrependHeaderOperations() {
  78. selectMenuPath("Component", "Header", "Prepend header row");
  79. assertEquals(2, getGridElement().getHeaderCount());
  80. setSelectionModelMulti();
  81. GridCellElement header = getGridElement().getHeaderCell(1, 0);
  82. assertTrue("Multi Selection Model should have select all checkbox",
  83. header.isElementPresent(By.tagName("input")));
  84. setSelectionModelSingle();
  85. header = getGridElement().getHeaderCell(1, 0);
  86. assertFalse(
  87. "Check box shouldn't have been in header for Single Selection Model",
  88. header.isElementPresent(By.tagName("input")));
  89. selectMenuPath("Component", "Header", "Append header row");
  90. assertEquals(3, getGridElement().getHeaderCount());
  91. setSelectionModelMulti();
  92. header = getGridElement().getHeaderCell(1, 0);
  93. assertTrue("Multi Selection Model should have select all checkbox",
  94. header.isElementPresent(By.tagName("input")));
  95. }
  96. @Test
  97. public void testSelectAllCheckbox_selectedAllFromClient_afterDeselectingOnClientSide_notSelected() {
  98. setSelectionModelMulti();
  99. verifyAllSelected(false);
  100. getSelectAllCheckbox().click();
  101. verifyAllSelected(true);
  102. getGridElement().getCell(5, 0).click();
  103. verifyAllSelected(false);
  104. getGridElement().getCell(5, 0).click();
  105. // EXPECTED since multiselection model can't
  106. // verify that all have been selected
  107. verifyAllSelected(false);
  108. }
  109. @Test
  110. public void testSelectAllCheckbox_selectedAllFromClient_afterDeselectingOnServerSide_notSelected() {
  111. setSelectionModelMulti();
  112. verifyAllSelected(false);
  113. getSelectAllCheckbox().click();
  114. verifyAllSelected(true);
  115. toggleFirstRowSelection();
  116. verifyAllSelected(false);
  117. toggleFirstRowSelection();
  118. // EXPECTED since multiselection model can't
  119. // verify that all have been selected
  120. verifyAllSelected(false);
  121. }
  122. @Test
  123. public void testSelectAllCheckbox_selectedAllFromServer_afterDeselectingOnClientSide_notSelected() {
  124. selectAll(); // triggers selection model change
  125. verifyAllSelected(true);
  126. getGridElement().getCell(5, 0).click();
  127. verifyAllSelected(false);
  128. getGridElement().getCell(5, 0).click();
  129. // EXPECTED since multiselection model can't
  130. // verify that all have been selected
  131. verifyAllSelected(false);
  132. }
  133. @Test
  134. public void testSelectAllCheckbox_selectedAllFromServer_afterDeselectingOnServerSide_notSelected() {
  135. selectAll(); // triggers selection model change
  136. verifyAllSelected(true);
  137. toggleFirstRowSelection();
  138. verifyAllSelected(false);
  139. toggleFirstRowSelection();
  140. // EXPECTED since multiselection model can't
  141. // verify that all have been selected
  142. verifyAllSelected(false);
  143. }
  144. @Test
  145. public void testSelectAllCheckbox_triggerVisibility() {
  146. verifySelectAllNotVisible();
  147. setSelectionModelMulti();
  148. verifySelectAllVisible();
  149. setSelectAllCheckBoxHidden();
  150. verifySelectAllNotVisible();
  151. setSelectAllCheckBoxDefault();
  152. verifySelectAllVisible(); // visible because in memory data provider
  153. setSelectAllCheckBoxHidden();
  154. verifySelectAllNotVisible();
  155. setSelectAllCheckBoxVisible();
  156. verifySelectAllVisible();
  157. }
  158. @Test
  159. public void testSelectAllCheckboxNotVisible_selectAllFromServer_staysHidden() {
  160. setSelectionModelMulti();
  161. verifySelectAllVisible();
  162. setSelectAllCheckBoxHidden();
  163. verifySelectAllNotVisible();
  164. selectAll();
  165. verifySelectAllNotVisible();
  166. }
  167. @Test
  168. public void testSelectAll_immediatelyWhenSettingSelectionModel() {
  169. verifySelectAllNotVisible();
  170. selectAll(); // changes selection model too
  171. verifyAllSelected(true);
  172. }
  173. @Test
  174. public void testSelectAllCheckBoxHidden_immediatelyWhenChaningModel() {
  175. verifySelectAllNotVisible();
  176. setSelectAllCheckBoxHidden(); // changes selection model
  177. verifySelectAllNotVisible();
  178. }
  179. private void verifyAllSelected(boolean selected) {
  180. verifySelectAllVisible();
  181. assertEquals("Select all checkbox selection state wrong", selected,
  182. getSelectAllCheckbox().isSelected());
  183. }
  184. private void verifySelectAllVisible() {
  185. assertTrue("Select all checkbox should be displayed",
  186. getSelectAllCheckbox().isDisplayed());
  187. }
  188. private void verifySelectAllNotVisible() {
  189. assertEquals("Select all checkbox should not be displayed", 0,
  190. getGridElement().getHeaderCell(0, 0)
  191. .findElements(By.tagName("input")).size());
  192. }
  193. }