package com.vaadin.tests.dd;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import com.vaadin.testbench.By;
import com.vaadin.testbench.TestBenchElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
import com.vaadin.v7.testbench.elements.TreeElement;
public class DnDOnSubtreeTest extends MultiBrowserTest {
@Override
protected Class<?> getUIClass() {
return DDTest8.class;
}
@Test
public void testDragAndDropOnSubTrees() throws Exception {
openTestURL();
TreeElement tree = $(TreeElement.class).first();
WebElement bar2 = tree.findElement(By.vaadin("#n[3]"));
WebElement bar5 = tree.findElement(By.vaadin("#n[6]"));
new Actions(driver).moveToElement(bar2, 11, 8).clickAndHold()
.moveByOffset(10, 10).perform();
/* Drop on Bar5, which is a subtree target */
new Actions(driver).moveToElement(bar5, 34, 9).release().perform();
testBenchElement(tree.findElement(By.vaadin("#n[5]/expand"))).click(5,
5);
/* Assert that the dragged & dropped node is now a child of Bar5 */
waitUntilElementPresent(tree, "#n[5]/n[0]");
}
private void waitUntilElementPresent(final TestBenchElement parent,
final String vaadinSelector) {
waitUntil(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver arg0) {
return parent.isElementPresent(By.vaadin(vaadinSelector));
}
@Override
public String toString() {
return String.format("element to contain '%s'", vaadinSelector);
}
});
}
}