aboutsummaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorcuong-phan <39257573+cuong-phan@users.noreply.github.com>2019-05-16 11:53:24 +0300
committerSun Zhe <31067185+ZheSun88@users.noreply.github.com>2019-05-16 11:53:24 +0300
commit2b1f9fac342bad3665aa19c07866fa146c90e357 (patch)
tree3504d2f944aa69aeab36e039ce97569f77300569 /uitest
parent07fe51a15eaac560c58eabc969940660c192c134 (diff)
downloadvaadin-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')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChange.java64
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/GridEventSentOnColumnVisibilityChangeTest.java39
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);
+ }
+}