package com.vaadin.tests.components.table;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import com.vaadin.testbench.TestBenchElement;
import com.vaadin.testbench.elements.TableElement;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class DisabledSortingTableTest extends MultiBrowserTest {
Class<?> uiClass;
@Override
protected java.lang.Class<?> getUIClass() {
return uiClass;
};
@Test
public void sortingByEmptyArrayShouldClearSortingIndicator() {
uiClass = DisabledSortingTable.class;
openTestURL();
assertThatFirstCellHasText("0");
sortFirstColumnAscending();
assertThatFirstCellHasText("4");
disableSorting();
sortByEmptyArray();
assertThatFirstCellHasText("4");
}
private void sortFirstColumnAscending() {
getFirstColumnHeader().click();
waitUntilHeaderHasExpectedClass("v-table-header-cell-asc");
}
private TestBenchElement getFirstColumnHeader() {
return getTable().getHeaderCell(1);
}
private TableElement getTable() {
return $(TableElement.class).first();
}
private void assertThatFirstCellHasText(String text) {
assertThat(getTable().getCell(0, 0).getText(), is(text));
}
private void sortByEmptyArray() {
$(ButtonElement.class).caption("Sort by empty array").first().click();
waitUntilHeaderHasExpectedClass("v-table-header-cell");
}
private void disableSorting() {
$(ButtonElement.class).caption("Disable sorting").first().click();
}
protected void waitUntilHeaderHasExpectedClass(final String className) {
final TestBenchElement header = getFirstColumnHeader();
waitUntil(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver input) {
return header.getAttribute("class").contains(className);
}
@Override
public String toString() {
// Timed out after 10 seconds waiting for ...
return String.format("header to get class name '%s'",
className);
}
});
}
}