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.

TableDragColumnTest.java 3.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.vaadin.tests.components.table;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertTrue;
  4. import org.junit.Test;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.interactions.Actions;
  7. import com.vaadin.testbench.By;
  8. import com.vaadin.testbench.elements.TableElement;
  9. import com.vaadin.testbench.elements.TableHeaderElement;
  10. import com.vaadin.tests.tb3.MultiBrowserTest;
  11. public class TableDragColumnTest extends MultiBrowserTest {
  12. @Override
  13. protected Class<?> getUIClass() {
  14. return Tables.class;
  15. }
  16. @Test
  17. public void testDragColumn() {
  18. openTestURL();
  19. selectMenuPath("Component", "Columns", "Property 1", "Icon",
  20. "ok 16x16");
  21. TableElement table = $(TableElement.class).first();
  22. TableHeaderElement dragged = table.getHeaderCell(0);
  23. String imgSrc = dragged.findElement(By.tagName("img"))
  24. .getAttribute("src");
  25. new Actions(getDriver()).moveToElement(dragged).clickAndHold()
  26. .moveByOffset(-6, 0).perform();
  27. assertTrue("No drag element visible",
  28. isElementPresent(By.className("v-table-header-drag")));
  29. WebElement dragImage = findElement(By.className("v-table-header-drag"));
  30. String cellContent = dragged.getText();
  31. assertEquals("Drag image had different content than header cell",
  32. cellContent, dragImage.getText());
  33. assertEquals("Drag image had different icon", imgSrc,
  34. dragImage.findElement(By.tagName("img")).getAttribute("src"));
  35. TableHeaderElement target = table.getHeaderCell(3);
  36. new Actions(getDriver())
  37. .moveToElement(target, target.getSize().width - 5, 10).release()
  38. .perform();
  39. dragged = table.getHeaderCell(3);
  40. assertEquals("Column was not dropped where expected.", cellContent,
  41. dragged.getText());
  42. assertEquals("Drag image had different icon", imgSrc,
  43. dragged.findElement(By.tagName("img")).getAttribute("src"));
  44. }
  45. @Test
  46. public void testDragColumnFloatingElementStyle() {
  47. openTestURL();
  48. dragAndAssertStyleName("v-table-header-drag");
  49. selectMenuPath("Component", "Decorations", "Style name",
  50. "1px red border (border-red-1px)");
  51. dragAndAssertStyleName("border-red-1px");
  52. selectMenuPath("Component", "Decorations", "Style name",
  53. "2px blue border (border-blue-2px)");
  54. dragAndAssertStyleName("border-blue-2px");
  55. }
  56. private void dragAndAssertStyleName(String styleName) {
  57. TableHeaderElement dragged = $(TableElement.class).first()
  58. .getHeaderCell(0);
  59. new Actions(getDriver()).moveToElement(dragged).clickAndHold()
  60. .moveByOffset(-6, 0).perform();
  61. assertTrue("No drag element visible",
  62. isElementPresent(By.className("v-table-header-drag")));
  63. WebElement dragImage = findElement(By.className("v-table-header-drag"));
  64. String cellContent = dragged.getText();
  65. assertEquals("Drag image had different content than header cell",
  66. cellContent, dragImage.getText());
  67. assertTrue("Missing CSS class " + styleName,
  68. hasCssClass(dragImage, styleName));
  69. new Actions(getDriver()).release().perform();
  70. }
  71. }