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.

GridSortingTest.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.vaadin.tests.components.grid.basics;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.Date;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7. import org.junit.Test;
  8. import org.openqa.selenium.Keys;
  9. import org.openqa.selenium.remote.DesiredCapabilities;
  10. import com.vaadin.testbench.parallel.Browser;
  11. import static org.junit.Assert.assertEquals;
  12. import static org.junit.Assert.assertTrue;
  13. public class GridSortingTest extends GridBasicsTest {
  14. public static final Comparator<DataObject> BIG_RANDOM = Comparator
  15. .comparing(DataObject::getBigRandom);
  16. public static final Comparator<DataObject> SMALL_RANDOM = Comparator
  17. .comparing(DataObject::getSmallRandom);
  18. @Override
  19. public List<DesiredCapabilities> getBrowsersToTest() {
  20. // Should be browsersSupportingShiftClick but for whatever reason IE11
  21. // fails to shift click
  22. return Collections
  23. .singletonList(Browser.CHROME.getDesiredCapabilities());
  24. }
  25. @Test
  26. public void testSortBySingleColumnByUser() {
  27. getGridElement().getHeaderCell(0, 6).click();
  28. int i = 0;
  29. for (Integer rowNumber : getTestData().sorted(BIG_RANDOM)
  30. .map(DataObject::getRowNumber).limit(5)
  31. .collect(Collectors.toList())) {
  32. assertEquals("Grid was not sorted as expected, row number mismatch",
  33. rowNumber.toString(),
  34. getGridElement().getCell(i++, 3).getText());
  35. }
  36. }
  37. @Test
  38. public void testSortByMultipleColumnsByUser() {
  39. getGridElement().getHeaderCell(0, 7).click();
  40. getGridElement().getHeaderCell(0, 6).click(0, 0, Keys.SHIFT);
  41. int i = 0;
  42. for (Integer rowNumber : getTestData()
  43. .sorted(SMALL_RANDOM.thenComparing(BIG_RANDOM))
  44. .map(DataObject::getRowNumber).limit(5)
  45. .collect(Collectors.toList())) {
  46. assertEquals("Grid was not sorted as expected, row number mismatch",
  47. rowNumber.toString(),
  48. getGridElement().getCell(i++, 3).getText());
  49. }
  50. }
  51. @Test
  52. public void serverSideOrderByColumn0() {
  53. selectMenuPath("Component", "Columns", "Column 0", "Sort ASC");
  54. assertEquals("1. SortEvent: isUserOriginated? false", getLogRow(0));
  55. Comparator<String> comparator = Comparator.naturalOrder();
  56. int i = 0;
  57. for (String coord : getTestData().map(DataObject::getCoordinates)
  58. .sorted(comparator).limit(5).collect(Collectors.toList())) {
  59. assertEquals("Grid was not sorted as expected, row number mismatch",
  60. coord, getGridElement().getCell(i++, 0).getText());
  61. }
  62. // self-verification
  63. assertTrue(i > 0);
  64. selectMenuPath("Component", "Columns", "Column 0", "Sort DESC");
  65. assertEquals("2. SortEvent: isUserOriginated? false", getLogRow(0));
  66. i = 0;
  67. for (String coord : getTestData().map(DataObject::getCoordinates)
  68. .sorted(comparator.reversed()).limit(5)
  69. .collect(Collectors.toList())) {
  70. assertEquals("Grid was not sorted as expected, row number mismatch",
  71. coord, getGridElement().getCell(i++, 0).getText());
  72. }
  73. }
  74. @Test
  75. public void serverSideOrderByDate() {
  76. selectMenuPath("Component", "Columns", "Date", "Sort ASC");
  77. assertEquals("1. SortEvent: isUserOriginated? false", getLogRow(0));
  78. Comparator<Date> comparator = Comparator.naturalOrder();
  79. int i = 0;
  80. for (Date date : getTestData().map(DataObject::getDate)
  81. .sorted(comparator).limit(5).collect(Collectors.toList())) {
  82. assertEquals("Grid was not sorted as expected, row number mismatch",
  83. date.toString(),
  84. getGridElement().getCell(i++, 4).getText());
  85. }
  86. // self-verification
  87. assertTrue(i > 0);
  88. selectMenuPath("Component", "Columns", "Date", "Sort DESC");
  89. assertEquals("2. SortEvent: isUserOriginated? false", getLogRow(0));
  90. i = 0;
  91. for (Date date : getTestData().map(DataObject::getDate)
  92. .sorted(comparator.reversed()).limit(5)
  93. .collect(Collectors.toList())) {
  94. assertEquals("Grid was not sorted as expected, row number mismatch",
  95. date.toString(),
  96. getGridElement().getCell(i++, 4).getText());
  97. }
  98. }
  99. @Test
  100. public void serverSideClearOrder() {
  101. selectMenuPath("Component", "Columns", "Column 0", "Sort ASC");
  102. selectMenuPath("Component", "Columns", "Clear sort");
  103. assertEquals("2. SortEvent: isUserOriginated? false", getLogRow(0));
  104. int i = 0;
  105. for (String coord : getTestData().map(DataObject::getCoordinates)
  106. .limit(5).collect(Collectors.toList())) {
  107. assertEquals("Grid was not sorted as expected, row number mismatch",
  108. coord, getGridElement().getCell(i++, 0).getText());
  109. }
  110. // self-verification
  111. assertTrue(i > 0);
  112. }
  113. }