diff options
Diffstat (limited to 'uitest')
2 files changed, 146 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/table/TableRepairsScrollPositionOnReAddingAllRows.java b/uitest/src/com/vaadin/tests/components/table/TableRepairsScrollPositionOnReAddingAllRows.java new file mode 100644 index 0000000000..d9cbf007df --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/TableRepairsScrollPositionOnReAddingAllRows.java @@ -0,0 +1,73 @@ +package com.vaadin.tests.components.table; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.Table; + +public class TableRepairsScrollPositionOnReAddingAllRows extends AbstractTestUI { + + private static final long serialVersionUID = 1L; + + @Override + protected void setup(VaadinRequest request) { + final BeanItemContainer<TableItem> cont = new BeanItemContainer<TableItem>( + TableItem.class); + final List<TableItem> itemList = new ArrayList<TableItem>(); + + Button button1 = new Button("ReAdd rows"); + button1.setId("button1"); + button1.addClickListener(new ClickListener() { + + @Override + public void buttonClick(com.vaadin.ui.Button.ClickEvent event) { + cont.removeAllItems(); + cont.addAll(itemList); + } + }); + + for (int i = 0; i < 80; i++) { + TableItem ti = new TableItem(); + ti.setName("Name_" + i); + itemList.add(ti); + cont.addBean(ti); + } + + final Table table = new Table(); + table.setPageLength(-1); + table.setContainerDataSource(cont); + table.setSelectable(true); + + getLayout().addComponent(button1); + getLayout().addComponent(table); + } + + public class TableItem implements Serializable { + private static final long serialVersionUID = -745849615488792221L; + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } + + @Override + protected Integer getTicketNumber() { + return 14581; + } + + @Override + protected String getTestDescription() { + return "The scroll position should not be changed if removing and re-adding all rows in Table."; + } +} diff --git a/uitest/src/com/vaadin/tests/components/table/TableRepairsScrollPositionOnReAddingAllRowsTest.java b/uitest/src/com/vaadin/tests/components/table/TableRepairsScrollPositionOnReAddingAllRowsTest.java new file mode 100644 index 0000000000..807a80d182 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/TableRepairsScrollPositionOnReAddingAllRowsTest.java @@ -0,0 +1,73 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +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.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedCondition; + +import com.vaadin.testbench.commands.TestBenchCommandExecutor; +import com.vaadin.testbench.elements.TableElement; +import com.vaadin.testbench.screenshot.ImageComparison; +import com.vaadin.testbench.screenshot.ReferenceNameGenerator; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class TableRepairsScrollPositionOnReAddingAllRowsTest extends + MultiBrowserTest { + + @Test + public void testScrollRepairsAfterReAddingAllRows() + throws InterruptedException { + openTestURL(); + + WebElement buttonReAddRows = findElement(By.id("button1")); + + scrollUp(); + + waitUntilNot(new ExpectedCondition<Boolean>() { + @Override + public Boolean apply(WebDriver input) { + return $(TableElement.class).first().getCell(49, 0) == null; + } + }, 10); + + WebElement row = $(TableElement.class).first().getCell(49, 0); + int rowLocation = row.getLocation().getY(); + + buttonReAddRows.click(); + + row = $(TableElement.class).first().getCell(49, 0); + int newRowLocation = row.getLocation().getY(); + + assertThat( + "Scroll position should be the same as before Re-Adding all rows", + rowLocation == newRowLocation, is(true)); + } + + private void scrollUp() { + WebElement actualElement = getDriver().findElement( + By.className("v-table-body-wrapper")); + JavascriptExecutor js = new TestBenchCommandExecutor(getDriver(), + new ImageComparison(), new ReferenceNameGenerator()); + js.executeScript("arguments[0].scrollTop = " + 1200, actualElement); + } +} |