From 8e255bd65e087cddc4ab27d9ffdfc1617a6d79a6 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Sun, 17 Jan 2016 19:15:48 +0200 Subject: [PATCH] Test for selection after container reset (#19469, #19465) Change-Id: I04ba09bd8396ac46f5df160d982c613961fd43bf --- .../components/grid/GridReplaceContainer.java | 94 +++++++++++++++++++ .../grid/GridReplaceContainerTest.java | 39 ++++++++ 2 files changed, 133 insertions(+) create mode 100644 uitest/src/com/vaadin/tests/components/grid/GridReplaceContainer.java create mode 100644 uitest/src/com/vaadin/tests/components/grid/GridReplaceContainerTest.java 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 index 0000000000..e81733cb86 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/GridReplaceContainer.java @@ -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 bic = new BeanItemContainer(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 index 0000000000..cf20ac87b5 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/GridReplaceContainerTest.java @@ -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()); + } +} -- 2.39.5