]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test for selection after container reset (#19469, #19465)
authorArtur Signell <artur@vaadin.com>
Sun, 17 Jan 2016 17:15:48 +0000 (19:15 +0200)
committerVaadin Code Review <review@vaadin.com>
Mon, 18 Jan 2016 09:26:35 +0000 (09:26 +0000)
Change-Id: I04ba09bd8396ac46f5df160d982c613961fd43bf

uitest/src/com/vaadin/tests/components/grid/GridReplaceContainer.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/grid/GridReplaceContainerTest.java [new file with mode: 0644]

diff --git a/uitest/src/com/vaadin/tests/components/grid/GridReplaceContainer.java b/uitest/src/com/vaadin/tests/components/grid/GridReplaceContainer.java
new file mode 100644 (file)
index 0000000..e81733c
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * 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.grid;
+
+import com.vaadin.data.Container.Indexed;
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.event.SelectionEvent;
+import com.vaadin.event.SelectionEvent.SelectionListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.SelectionMode;
+
+public class GridReplaceContainer extends AbstractTestUIWithLog {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        final Grid grid = new Grid();
+        grid.setSelectionMode(SelectionMode.SINGLE);
+        grid.setContainerDataSource(createContainer());
+        grid.addSelectionListener(new SelectionListener() {
+
+            @Override
+            public void select(SelectionEvent event) {
+                Bean selected = (Bean) grid.getSelectedRow();
+                if (selected != null) {
+                    log("Now selected: " + selected.getData());
+                } else {
+                    log("Now selected: null");
+                }
+
+            }
+        });
+        addComponent(grid);
+        Button b = new Button("Re-set data source", new Button.ClickListener() {
+
+            @Override
+            public void buttonClick(ClickEvent event) {
+                grid.setContainerDataSource(createContainer());
+            }
+        });
+        addComponent(b);
+    }
+
+    public static class Bean {
+        private int id;
+        private String data;
+
+        public Bean(int id, String data) {
+            this.id = id;
+            this.data = data;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+        public void setId(int id) {
+            this.id = id;
+        }
+
+        public String getData() {
+            return data;
+        }
+
+        public void setData(String data) {
+            this.data = data;
+        }
+
+    }
+
+    private Indexed createContainer() {
+        BeanItemContainer<Bean> bic = new BeanItemContainer<Bean>(Bean.class);
+        bic.addBean(new Bean(1, "First item"));
+        bic.addBean(new Bean(2, "Second item"));
+        bic.addBean(new Bean(3, "Third item"));
+        return bic;
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridReplaceContainerTest.java b/uitest/src/com/vaadin/tests/components/grid/GridReplaceContainerTest.java
new file mode 100644 (file)
index 0000000..cf20ac8
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * 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.grid;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class GridReplaceContainerTest extends SingleBrowserTest {
+
+    @Test
+    public void selectAfterContainerChange() {
+        openTestURL();
+        GridElement grid = $(GridElement.class).first();
+        grid.getCell(0, 0).click();
+        Assert.assertTrue(grid.getRow(0).isSelected());
+
+        $(ButtonElement.class).first().click();
+        Assert.assertFalse(grid.getRow(0).isSelected());
+        grid.getCell(0, 0).click();
+        Assert.assertTrue(grid.getRow(0).isSelected());
+    }
+}