package com.vaadin.tests.components.treegrid;
import org.junit.Assert;
import org.junit.Test;
import com.vaadin.testbench.elements.TreeGridElement;
import com.vaadin.tests.tb3.SingleBrowserTest;
public class TreeGridScrollingTest extends SingleBrowserTest {
@Test
public void testScrollingTree_expandCollapseFromBeginning_correctItemsShown() {
// TODO refactor this test to verify each row against a model, e.g. a
// InMemoryDataProvider, or the used lazy hierarchical data provider
openTestURL();
TreeGridElement grid = $(TreeGridElement.class).first();
Assert.assertEquals(grid.getRowCount(),
TreeGridScrolling.DEFAULT_NODES);
verifyRow(0, 0, 0);
verifyRow(10, 0, 10);
verifyRow(19, 0, 19);
verifyRow(10, 0, 10);
verifyRow(0, 0, 0);
grid.expandWithClick(0);
verifyRow(0, 0, 0);
verifyRow(1, 1, 0);
verifyRow(11, 1, 10);
verifyRow(20, 1, 19);
verifyRow(39, 0, 19);
// verifying in reverse order causes scrolling up
verifyRow(20, 1, 19);
verifyRow(11, 1, 10);
verifyRow(1, 1, 0);
verifyRow(0, 0, 0);
grid.expandWithClick(3);
verifyRow(0, 0, 0);
verifyRow(1, 1, 0);
verifyRow(2, 1, 1);
verifyRow(3, 1, 2);
verifyRow(4, 2, 0);
verifyRow(14, 2, 10);
verifyRow(23, 2, 19);
verifyRow(24, 1, 3);
verifyRow(40, 1, 19);
verifyRow(59, 0, 19);
// scroll back up
verifyRow(40, 1, 19);
verifyRow(24, 1, 3);
verifyRow(23, 2, 19);
verifyRow(14, 2, 10);
verifyRow(4, 2, 0);
verifyRow(2, 1, 1);
verifyRow(3, 1, 2);
verifyRow(1, 1, 0);
verifyRow(0, 0, 0);
grid.expandWithClick(2);
verifyRow(0, 0, 0);
verifyRow(1, 1, 0);
verifyRow(2, 1, 1);
verifyRow(3, 2, 0);
verifyRow(22, 2, 19);
verifyRow(23, 1, 2);
verifyRow(24, 2, 0);
verifyRow(43, 2, 19);
verifyRow(44, 1, 3);
verifyRow(60, 1, 19);
verifyRow(79, 0, 19);
// scroll back up
verifyRow(60, 1, 19);
verifyRow(44, 1, 3);
verifyRow(43, 2, 19);
verifyRow(24, 2, 0);
verifyRow(23, 1, 2);
verifyRow(22, 2, 19);
verifyRow(3, 2, 0);
verifyRow(2, 1, 1);
verifyRow(1, 1, 0);
verifyRow(0, 0, 0);
grid.collapseWithClick(2);
verifyRow(0, 0, 0);
verifyRow(1, 1, 0);
verifyRow(2, 1, 1);
verifyRow(3, 1, 2);
verifyRow(4, 2, 0);
verifyRow(14, 2, 10);
verifyRow(23, 2, 19);
verifyRow(24, 1, 3);
verifyRow(40, 1, 19);
verifyRow(59, 0, 19);
// scroll back up
verifyRow(40, 1, 19);
verifyRow(24, 1, 3);
verifyRow(23, 2, 19);
verifyRow(14, 2, 10);
verifyRow(4, 2, 0);
verifyRow(2, 1, 1);
verifyRow(3, 1, 2);
verifyRow(1, 1, 0);
verifyRow(0, 0, 0);
grid.collapseWithClick(3);
verifyRow(0, 0, 0);
verifyRow(1, 1, 0);
verifyRow(11, 1, 10);
verifyRow(20, 1, 19);
verifyRow(39, 0, 19);
// scroll back up
verifyRow(20, 1, 19);
verifyRow(11, 1, 10);
verifyRow(1, 1, 0);
verifyRow(0, 0, 0);
grid.collapseWithClick(0);
verifyRow(0, 0, 0);
verifyRow(10, 0, 10);
verifyRow(19, 0, 19);
verifyRow(10, 0, 10);
verifyRow(0, 0, 0);
}
private void verifyRow(int rowActualIndex, int depth, int levelIndex) {
TreeGridElement grid = $(TreeGridElement.class).first();
Assert.assertEquals("Invalid row at index " + rowActualIndex,
depth + " | " + levelIndex,
grid.getCell(rowActualIndex, 0).getText());
}
}