package com.vaadin.tests.components.grid; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import java.util.List; import org.junit.Test; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.By; import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.tests.tb3.MultiBrowserTest; public class GridDisabledMultiselectTest extends MultiBrowserTest { @Override public void setup() throws Exception { super.setup(); openTestURL(); } private void disable() { $(ButtonElement.class).caption("Disable").first().click(); } private void setMultiselect() { $(ButtonElement.class).caption("Multi").first().click(); } private WebElement getSelectAllCheckBox() { return findCheckBoxes().get(0); } private List<WebElement> findCheckBoxes() { return findElements(By.cssSelector("span input")); } private WebElement getFirstSelectCheckBox() { return findCheckBoxes().get(0); } @Test public void checkBoxesAreDisabledAfterModeChange() { disable(); setMultiselect(); assertThat(getSelectAllCheckBox().isEnabled(), is(false)); assertThat(getFirstSelectCheckBox().isEnabled(), is(false)); } @Test public void checkBoxesAreDisabledAfterDisabled() { setMultiselect(); assertThat(getSelectAllCheckBox().isEnabled(), is(true)); assertThat(getFirstSelectCheckBox().isEnabled(), is(true)); disable(); assertThat(getSelectAllCheckBox().isEnabled(), is(false)); assertThat(getFirstSelectCheckBox().isEnabled(), is(false)); } @Test public void parentSpanCannotBeClickedWhenDisabled() { setMultiselect(); disable(); WebElement firstCheckBoxSpan = findElements(By.cssSelector("span")) .get(1); new Actions(driver).moveToElement(firstCheckBoxSpan, 1, 1).click() .perform(); assertThat(getFirstSelectCheckBox().isSelected(), is(false)); } }