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 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /*
  2. * Copyright 2000-2014 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.tests.components.table;
  17. import org.junit.Assert;
  18. import org.junit.Test;
  19. import org.openqa.selenium.WebElement;
  20. import org.openqa.selenium.interactions.Actions;
  21. import com.vaadin.testbench.By;
  22. import com.vaadin.testbench.elements.TableElement;
  23. import com.vaadin.testbench.elements.TableHeaderElement;
  24. import com.vaadin.tests.tb3.MultiBrowserTest;
  25. public class TableDragColumnTest extends MultiBrowserTest {
  26. @Override
  27. protected Class<?> getUIClass() {
  28. return Tables.class;
  29. }
  30. @Test
  31. public void testDragColumn() {
  32. openTestURL();
  33. selectMenuPath("Component", "Columns", "Property 1", "Icon", "ok 16x16");
  34. TableElement table = $(TableElement.class).first();
  35. TableHeaderElement dragged = table.getHeaderCell(0);
  36. String imgSrc = dragged.findElement(By.tagName("img")).getAttribute(
  37. "src");
  38. new Actions(getDriver()).moveToElement(dragged).clickAndHold()
  39. .moveByOffset(-6, 0).perform();
  40. Assert.assertTrue("No drag element visible",
  41. isElementPresent(By.className("v-table-header-drag")));
  42. WebElement dragImage = findElement(By.className("v-table-header-drag"));
  43. String cellContent = dragged.getText();
  44. Assert.assertEquals(
  45. "Drag image had different content than header cell",
  46. cellContent, dragImage.getText());
  47. Assert.assertEquals("Drag image had different icon", imgSrc, dragImage
  48. .findElement(By.tagName("img")).getAttribute("src"));
  49. TableHeaderElement target = table.getHeaderCell(3);
  50. new Actions(getDriver())
  51. .moveToElement(target, target.getSize().width - 5, 10)
  52. .release().perform();
  53. dragged = table.getHeaderCell(3);
  54. Assert.assertEquals("Column was not dropped where expected.",
  55. cellContent, dragged.getText());
  56. Assert.assertEquals("Drag image had different icon", imgSrc, dragged
  57. .findElement(By.tagName("img")).getAttribute("src"));
  58. }
  59. @Test
  60. public void testDragColumnFloatingElementStyle() {
  61. openTestURL();
  62. dragAndAssertStyleName("v-table-header-drag");
  63. selectMenuPath("Component", "Decorations", "Style name",
  64. "1px red border (border-red-1px)");
  65. dragAndAssertStyleName("border-red-1px");
  66. selectMenuPath("Component", "Decorations", "Style name",
  67. "2px blue border (border-blue-2px)");
  68. dragAndAssertStyleName("border-blue-2px");
  69. }
  70. private void dragAndAssertStyleName(String styleName) {
  71. TableHeaderElement dragged = $(TableElement.class).first()
  72. .getHeaderCell(0);
  73. new Actions(getDriver()).moveToElement(dragged).clickAndHold()
  74. .moveByOffset(-6, 0).perform();
  75. Assert.assertTrue("No drag element visible",
  76. isElementPresent(By.className("v-table-header-drag")));
  77. WebElement dragImage = findElement(By.className("v-table-header-drag"));
  78. String cellContent = dragged.getText();
  79. Assert.assertEquals(
  80. "Drag image had different content than header cell",
  81. cellContent, dragImage.getText());
  82. Assert.assertTrue("Missing CSS class " + styleName,
  83. hasCssClass(dragImage, styleName));
  84. new Actions(getDriver()).release().perform();
  85. }
  86. protected void selectSubMenu(String menuCaption) {
  87. selectMenu(menuCaption);
  88. new Actions(getDriver()).moveByOffset(100, 0).build().perform();
  89. }
  90. protected void selectMenu(String menuCaption) {
  91. getDriver().findElement(
  92. By.xpath("//span[text() = '" + menuCaption + "']")).click();
  93. }
  94. protected void selectMenuPath(String... menuCaptions) {
  95. selectMenu(menuCaptions[0]);
  96. for (int i = 1; i < menuCaptions.length; i++) {
  97. selectSubMenu(menuCaptions[i]);
  98. }
  99. }
  100. }