summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorTobse <1190109+TobseF@users.noreply.github.com>2019-03-27 18:59:08 +0100
committerPekka Hyvönen <pekka@vaadin.com>2019-03-27 19:59:08 +0200
commit7cd94ce0b02bb4ecd7826283d3928e3a66e39301 (patch)
treec82317058996420fb7c3f00f64f6c2135d977eed /uitest
parent51b64cc579c302b693aecfbf91726fa45dc08b47 (diff)
downloadvaadin-framework-7cd94ce0b02bb4ecd7826283d3928e3a66e39301.tar.gz
vaadin-framework-7cd94ce0b02bb4ecd7826283d3928e3a66e39301.zip
Fix NPE in v7 compatibility Grid during datasource rebind (#11473)
Add DataChangeHandler removal in v7 Grid just as in v8 Grid. Adding tests to the fix to verify, that NPE is not thrown.
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7.java42
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7Test.java23
2 files changed, 65 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7.java
new file mode 100644
index 0000000000..28aec9c596
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7.java
@@ -0,0 +1,42 @@
+package com.vaadin.tests.components.grid;
+
+import com.vaadin.annotations.Widgetset;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.v7.data.util.IndexedContainer;
+import com.vaadin.v7.ui.Grid;
+
+@Widgetset("com.vaadin.v7.Vaadin7WidgetSet")
+public class GridRebindDataSourceV7 extends AbstractTestUI {
+ private Grid grid;
+ private IndexedContainer container = new IndexedContainer();
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ container.addContainerProperty("name", String.class, null);
+ container.addItem("test").getItemProperty("name").setValue("test");
+ grid = new Grid();
+ grid.setContainerDataSource(container);
+ grid.setEditorEnabled(true);
+ addComponent(grid);
+
+ Button button = new Button("Change container",
+ new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(Button.ClickEvent event) {
+ IndexedContainer container = new IndexedContainer();
+ container.addContainerProperty("age", Integer.class,
+ null);
+ container.addItem("first").getItemProperty("age")
+ .setValue(45);
+ grid.removeAllColumns();
+ grid.setContainerDataSource(container);
+ }
+ });
+ button.setId("changeContainer");
+ addComponent(button);
+ }
+
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7Test.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7Test.java
new file mode 100644
index 0000000000..817cc88032
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridRebindDataSourceV7Test.java
@@ -0,0 +1,23 @@
+package com.vaadin.tests.components.grid;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+public class GridRebindDataSourceV7Test extends MultiBrowserTest {
+
+ @Override
+ public void setup() throws Exception {
+ super.setup();
+
+ setDebug(true);
+ openTestURL();
+ waitForElementPresent(By.className("v-grid"));
+ }
+
+ @Test
+ public void testNoNPE() {
+ findElement(By.id("changeContainer")).click();
+ assertNoErrorNotifications();
+ }
+}