diff options
author | cuong-phan <39257573+cuong-phan@users.noreply.github.com> | 2019-05-16 11:53:24 +0300 |
---|---|---|
committer | Sun Zhe <31067185+ZheSun88@users.noreply.github.com> | 2019-05-16 11:53:24 +0300 |
commit | 2b1f9fac342bad3665aa19c07866fa146c90e357 (patch) | |
tree | 3504d2f944aa69aeab36e039ce97569f77300569 /uitest | |
parent | 07fe51a15eaac560c58eabc969940660c192c134 (diff) | |
download | vaadin-framework-2b1f9fac342bad3665aa19c07866fa146c90e357.tar.gz vaadin-framework-2b1f9fac342bad3665aa19c07866fa146c90e357.zip |
Fix duplicate grid column visibility change event (#11565)
* Fix duplicate grid column visibility change event
Toggle a column visibility through UI will fire 2 event. There should be only 1.
* Add Test
Diffstat (limited to 'uitest')
2 files changed, 103 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChange.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChange.java new file mode 100644 index 0000000000..dd4cf5e7e2 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChange.java @@ -0,0 +1,64 @@ +package com.vaadin.tests.components.grid; + +import java.util.Arrays; +import java.util.List; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUIWithLog; +import com.vaadin.ui.Grid; + +public class GridEventSentOnColumnVisibilityChange + extends AbstractTestUIWithLog { + + @Override + protected void setup(VaadinRequest request) { + List<Person> people = Arrays.asList( + new Person("Nicolaus Copernicus", 1543), + new Person("Galileo Galilei", 1564), + new Person("Johannes Kepler", 1571)); + + Grid<Person> grid = new Grid<>(); + + grid.setItems(people); + grid.addColumn(Person::getName).setId("name").setCaption("Name") + .setHidable(true); + grid.addColumn(Person::getBirthYear).setCaption("Year of birth") + .setHidable(true); + + grid.setSizeFull(); + + grid.addColumnVisibilityChangeListener( + event -> log("UserOriginated: " + event.isUserOriginated())); + + addComponent(grid); + } + + private class Person { + private final String name; + private final int birthYear; + + public Person(String name, int birthYear) { + this.name = name; + this.birthYear = birthYear; + } + + public String getName() { + return name; + } + + public int getBirthYear() { + return birthYear; + } + } + + @Override + public String getDescription() { + return "Every time when the user changes the visibility of the column," + + " there should have only one event sent"; + } + + @Override + protected Integer getTicketNumber() { + return 11419; + } +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChangeTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChangeTest.java new file mode 100644 index 0000000000..c315513620 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChangeTest.java @@ -0,0 +1,39 @@ +package com.vaadin.tests.components.grid; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.tests.tb3.SingleBrowserTest; + +public class GridEventSentOnColumnVisibilityChangeTest extends SingleBrowserTest { + + @Test + public void changeVisibilityAssertLog() { + openTestURL(); + + GridElement grid = $(GridElement.class).first(); + getSidebarOpenButton(grid).click(); + // hide the first column + getSidebarPopup().findElements(By.tagName("td")).get(0).click(); + + Assert.assertTrue("Log content should match", + "1. UserOriginated: true".equals(getLogRow(0))); + } + + protected WebElement getSidebarOpenButton(GridElement grid) { + List<WebElement> elements = grid + .findElements(By.className("v-grid-sidebar-button")); + return elements.isEmpty() ? null : elements.get(0); + } + + protected WebElement getSidebarPopup() { + List<WebElement> elements = findElements( + By.className("v-grid-sidebar-popup")); + return elements.isEmpty() ? null : elements.get(0); + } +} |