package com.vaadin.tests.components.window;
import static org.junit.Assert.assertNotEquals;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class WindowMoveListenerTest extends MultiBrowserTest {
@Test
public void testWindowRepositioning() throws Exception {
openTestURL();
final WebElement window = getDriver().findElement(By.id("testwindow"));
WebElement button = getDriver().findElement(By.id("testbutton"));
// I'd loved to use the header, but that doesn't work. Footer works
// fine, though :)
WebElement windowFooter = getDriver()
.findElement(By.className("v-window-footer"));
final Point winPos = window.getLocation();
// move window
Action a = new Actions(driver).clickAndHold(windowFooter)
.moveByOffset(100, 100).release().build();
a.perform();
assertNotEquals("Window was not dragged correctly.", winPos.x,
window.getLocation().x);
assertNotEquals("Window was not dragged correctly.", winPos.y,
window.getLocation().y);
// re-set window
button.click();
waitUntilWindowHasReseted(window, winPos);
}
private void waitUntilWindowHasReseted(final WebElement window,
final Point winPos) {
waitUntil(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver input) {
return winPos.x == window.getLocation().x
&& winPos.y == window.getLocation().y;
}
}, 5);
}
}