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.

ItemClickEventsTest.java 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.vaadin.tests.components.table;
  2. import org.junit.Before;
  3. import org.junit.Test;
  4. import com.vaadin.testbench.TestBenchElement;
  5. import com.vaadin.testbench.elements.CheckBoxElement;
  6. import com.vaadin.testbench.elements.LabelElement;
  7. import com.vaadin.testbench.elements.TableElement;
  8. import com.vaadin.tests.tb3.MultiBrowserTest;
  9. import static org.junit.Assert.assertNotNull;
  10. import static org.junit.Assert.assertTrue;
  11. public class ItemClickEventsTest extends MultiBrowserTest {
  12. @Before
  13. public void init() {
  14. openTestURL("restartApplication");
  15. }
  16. private void clickElement(TestBenchElement e) {
  17. assertNotNull(e);
  18. e.click();
  19. }
  20. private void doubleClickElement(TestBenchElement e) {
  21. assertNotNull(e);
  22. e.doubleClick();
  23. }
  24. private void assertLog(String compare) {
  25. LabelElement logRow = $(LabelElement.class).id("Log_row_0");
  26. assertNotNull(logRow);
  27. assertTrue(logRow.getText().contains(compare));
  28. }
  29. private void assertSelected(TestBenchElement e) {
  30. assertNotNull(e);
  31. assertTrue(hasCssClass(e, "v-selected"));
  32. }
  33. @Test
  34. public void testSingleSelectNull() throws Exception {
  35. // Activate table null selection mode
  36. clickElement($(CheckBoxElement.class).caption("nullsel").get(1));
  37. // Get at the table element
  38. TableElement table = $(TableElement.class).id("table");
  39. // Select the first item
  40. clickElement(table.getRow(0));
  41. assertLog("left click on table/Item 0");
  42. sleep(100);
  43. // Do it again
  44. clickElement(table.getRow(0));
  45. assertLog("left click on table/Item 0");
  46. // Select the sixth item
  47. clickElement(table.getRow(5));
  48. assertLog("left click on table/Item 5");
  49. // Double click the sixth item
  50. doubleClickElement(table.getRow(5));
  51. assertLog("doubleClick on table/Item 5");
  52. }
  53. @Test
  54. public void testSingleSelectNotNull() throws Exception {
  55. // Get reference to table
  56. TableElement table = $(TableElement.class).id("table");
  57. // Select first item in list
  58. clickElement(table.getRow(0));
  59. assertSelected(table.getRow(0));
  60. // Check that the log contains "clicked item 0"
  61. assertLog("left click on table/Item 0");
  62. // Click on second item in list
  63. clickElement(table.getRow(1));
  64. // Make sure it got selected
  65. assertSelected(table.getRow(1));
  66. // Check log output
  67. assertLog("left click on table/Item 1");
  68. sleep(500);
  69. // Click row 1 again
  70. clickElement(table.getRow(1));
  71. assertLog("left click on table/Item 1");
  72. // Test double click
  73. doubleClickElement(table.getRow(1));
  74. // kludge: testbench seems to send an extra click; that doesn't affect
  75. // our test too much, though, and can be ignored.
  76. assertLog("doubleClick on table/Item 1");
  77. // Double click first item
  78. doubleClickElement(table.getRow(0));
  79. assertLog("doubleClick on table/Item 0");
  80. // Make sure it got selected again
  81. assertSelected(table.getRow(0));
  82. }
  83. @Test
  84. public void testSingleSelectNotSelectable() throws Exception {
  85. // Remove the 'selectable' mode from Table
  86. $(CheckBoxElement.class).caption("selectable").get(1).click();
  87. // Get table element
  88. TableElement table = $(TableElement.class).id("table");
  89. // Click some items and check that clicks go through
  90. clickElement(table.getCell(0, 0));
  91. assertLog("left click on table/Item 0");
  92. clickElement(table.getCell(5, 0));
  93. assertLog("left click on table/Item 5");
  94. clickElement(table.getCell(2, 0));
  95. assertLog("left click on table/Item 2");
  96. clickElement(table.getCell(8, 0));
  97. assertLog("left click on table/Item 8");
  98. clickElement(table.getCell(1, 0));
  99. assertLog("left click on table/Item 1");
  100. clickElement(table.getCell(0, 0));
  101. assertLog("left click on table/Item 0");
  102. }
  103. @Test
  104. public void testNonImmediateSingleSelectable() throws Exception {
  105. // Disable table immediate mode
  106. clickElement($(CheckBoxElement.class).caption("immediate").get(1));
  107. // Get table element
  108. TableElement table = $(TableElement.class).id("table");
  109. // Click items and verify that click event went through
  110. clickElement(table.getCell(1, 0));
  111. assertLog("left click on table/Item 1");
  112. clickElement(table.getCell(8, 0));
  113. assertLog("left click on table/Item 8");
  114. clickElement(table.getCell(1, 0));
  115. assertLog("left click on table/Item 1");
  116. clickElement(table.getCell(0, 0));
  117. assertLog("left click on table/Item 0");
  118. clickElement(table.getCell(6, 0));
  119. assertLog("left click on table/Item 6");
  120. }
  121. }