diff options
author | Denis <denis@vaadin.com> | 2017-01-02 13:43:29 +0200 |
---|---|---|
committer | Ilia Motornyi <elmot@vaadin.com> | 2017-01-02 13:43:29 +0200 |
commit | adbe38eea2174322e637c56399493b62a1fdd444 (patch) | |
tree | f65ad48906710d99d38486b248a35e6d7b432d39 | |
parent | 9c6831bab067ccdb47c3063f2e77d3c0e7fe3440 (diff) | |
download | vaadin-framework-adbe38eea2174322e637c56399493b62a1fdd444.tar.gz vaadin-framework-adbe38eea2174322e637c56399493b62a1fdd444.zip |
Grid UI tests migration P2.
Fixes vaadin/framework8-issues#588
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/components/grid/GridCellFocusOnResetSize.java (renamed from uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCellFocusOnResetSize.java) | 4 | ||||
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/components/grid/GridCheckBoxDisplay.java (renamed from uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCheckBoxDisplay.java) | 41 | ||||
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/components/grid/GridClientDataChangeHandler.java (renamed from uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridClientDataChangeHandler.java) | 4 | ||||
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/GridCellFocusOnResetSizeWidget.java (renamed from uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/GridCellFocusOnResetSizeWidget.java) | 13 | ||||
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/GridDataChangeHandlerWidget.java (renamed from uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/GridDataChangeHandlerWidget.java) | 9 | ||||
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/PureGWTTestApplication.java | 309 | ||||
-rw-r--r-- | uitest/src/test/java/com/vaadin/tests/components/grid/GridCellFocusOnResetSizeTest.java (renamed from uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCellFocusOnResetSizeTest.java) | 2 | ||||
-rw-r--r-- | uitest/src/test/java/com/vaadin/tests/components/grid/GridCheckBoxDisplayTest.java (renamed from uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCheckBoxDisplayTest.java) | 2 | ||||
-rw-r--r-- | uitest/src/test/java/com/vaadin/tests/components/grid/GridClientDataChangeHandlerTest.java (renamed from uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientDataChangeHandlerTest.java) | 2 | ||||
-rw-r--r-- | uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java | 6 |
10 files changed, 361 insertions, 31 deletions
diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCellFocusOnResetSize.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridCellFocusOnResetSize.java index 40d3ff3df1..bfe3244554 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCellFocusOnResetSize.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridCellFocusOnResetSize.java @@ -13,13 +13,13 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import com.vaadin.annotations.Widgetset; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.tests.widgetset.TestingWidgetSet; -import com.vaadin.tests.widgetset.client.v7.grid.GridCellFocusOnResetSizeWidget; +import com.vaadin.tests.widgetset.client.grid.GridCellFocusOnResetSizeWidget; import com.vaadin.tests.widgetset.server.TestWidgetComponent; @Widgetset(TestingWidgetSet.NAME) diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCheckBoxDisplay.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridCheckBoxDisplay.java index 60019fc201..a09aba038c 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCheckBoxDisplay.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridCheckBoxDisplay.java @@ -13,36 +13,53 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import java.io.Serializable; +import java.util.Arrays; +import java.util.List; +import com.vaadin.data.Binder; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; -import com.vaadin.v7.data.util.BeanItemContainer; -import com.vaadin.v7.ui.Grid; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Grid; +import com.vaadin.ui.Grid.Column; +import com.vaadin.ui.TextField; public class GridCheckBoxDisplay extends AbstractReindeerTestUI { private static final long serialVersionUID = -5575892909354637168L; - private BeanItemContainer<Todo> todoContainer = new BeanItemContainer<>( - Todo.class); @Override protected void setup(VaadinRequest request) { - todoContainer.addBean(new Todo("Done task", true)); - todoContainer.addBean(new Todo("Not done", false)); + List<Todo> items = Arrays.asList(new Todo("Done task", true), + new Todo("Not done", false)); - Grid grid = new Grid(todoContainer); + Grid<Todo> grid = new Grid<>(); grid.setSizeFull(); - grid.setColumnOrder("done", "task"); - grid.getColumn("done").setWidth(75); - grid.getColumn("task").setExpandRatio(1); + TextField taskField = new TextField(); + CheckBox doneField = new CheckBox(); + Binder<Todo> binder = new Binder<>(); + + binder.bind(taskField, Todo::getTask, Todo::setTask); + binder.bind(doneField, Todo::isDone, Todo::setDone); + + grid.getEditor().setBinder(binder); + grid.getEditor().setEnabled(true); + + Column<Todo, String> column = grid + .addColumn(todo -> String.valueOf(todo.isDone())); + column.setWidth(75); + column.setEditorComponent(doneField); + + grid.addColumn(Todo::getTask).setExpandRatio(1) + .setEditorComponent(taskField); grid.setSelectionMode(Grid.SelectionMode.SINGLE); - grid.setEditorEnabled(true); + grid.setItems(items); getLayout().addComponent(grid); getLayout().setExpandRatio(grid, 1); diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridClientDataChangeHandler.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridClientDataChangeHandler.java index b8f272f6bf..50f7e40837 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridClientDataChangeHandler.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridClientDataChangeHandler.java @@ -13,13 +13,13 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import com.vaadin.annotations.Widgetset; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.tests.widgetset.TestingWidgetSet; -import com.vaadin.tests.widgetset.client.v7.grid.GridDataChangeHandlerWidget; +import com.vaadin.tests.widgetset.client.grid.GridDataChangeHandlerWidget; import com.vaadin.tests.widgetset.server.TestWidgetComponent; @Widgetset(TestingWidgetSet.NAME) diff --git a/uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/GridCellFocusOnResetSizeWidget.java b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/GridCellFocusOnResetSizeWidget.java index d2dbf78739..b5e1e824eb 100644 --- a/uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/GridCellFocusOnResetSizeWidget.java +++ b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/GridCellFocusOnResetSizeWidget.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.tests.widgetset.client.v7.grid; +package com.vaadin.tests.widgetset.client.grid; import java.util.ArrayList; import java.util.List; @@ -23,10 +23,10 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.Button; import com.vaadin.client.data.DataChangeHandler; import com.vaadin.client.data.DataSource; +import com.vaadin.client.renderers.HtmlRenderer; +import com.vaadin.client.widget.grid.selection.SelectionModel; +import com.vaadin.client.widgets.Grid; import com.vaadin.shared.Registration; -import com.vaadin.v7.client.renderers.HtmlRenderer; -import com.vaadin.v7.client.widgets.Grid; -import com.vaadin.v7.client.widgets.Grid.SelectionMode; public class GridCellFocusOnResetSizeWidget extends PureGWTTestApplication<Grid<String[]>> { @@ -90,7 +90,8 @@ public class GridCellFocusOnResetSizeWidget private class Col extends Grid.Column<String, String[]> { public Col(String header) { - super(header, new HtmlRenderer()); + super(header); + setRenderer(new HtmlRenderer()); } @Override @@ -103,7 +104,7 @@ public class GridCellFocusOnResetSizeWidget public GridCellFocusOnResetSizeWidget() { super(new Grid<String[]>()); grid = getTestedWidget(); - grid.setSelectionMode(SelectionMode.NONE); + grid.setSelectionModel(new SelectionModel.NoSelectionModel<>()); grid.setWidth("300px"); grid.addColumn(new Col("Foo")); final MyDataSource dataSource = new MyDataSource(); diff --git a/uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/GridDataChangeHandlerWidget.java b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/GridDataChangeHandlerWidget.java index a354580645..35562c9000 100644 --- a/uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/GridDataChangeHandlerWidget.java +++ b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/GridDataChangeHandlerWidget.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.tests.widgetset.client.v7.grid; +package com.vaadin.tests.widgetset.client.grid; import java.util.Arrays; import java.util.List; @@ -24,9 +24,8 @@ import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.vaadin.client.data.AbstractRemoteDataSource; -import com.vaadin.v7.client.widget.grid.datasources.ListDataSource; -import com.vaadin.v7.client.widgets.Grid; -import com.vaadin.v7.client.widgets.Grid.Column; +import com.vaadin.client.widget.grid.datasources.ListDataSource; +import com.vaadin.client.widgets.Grid; public class GridDataChangeHandlerWidget extends Composite { @@ -95,7 +94,7 @@ public class GridDataChangeHandlerWidget extends Composite { panel.setWidget(grid); grid.setDataSource(new RemoteDelayedDataSource( Arrays.asList("A", "B", "C", "D", "E"))); - grid.addColumn(new Column<String, String>("letter") { + grid.addColumn(new Grid.Column<String, String>("letter") { @Override public String getValue(String row) { return row; diff --git a/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/PureGWTTestApplication.java b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/PureGWTTestApplication.java new file mode 100644 index 0000000000..d1a410e7af --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/PureGWTTestApplication.java @@ -0,0 +1,309 @@ +/* + * Copyright 2000-2016 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.widgetset.client.grid; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.ui.DockLayoutPanel; +import com.google.gwt.user.client.ui.LayoutPanel; +import com.google.gwt.user.client.ui.MenuBar; +import com.google.gwt.user.client.ui.Panel; +import com.vaadin.client.ui.SubPartAware; + +/** + * Pure GWT Test Application base for testing features of a single widget; + * provides a menu system and convenience method for adding items to it. + * + * @since + * @author Vaadin Ltd + */ +public abstract class PureGWTTestApplication<T> extends DockLayoutPanel + implements SubPartAware { + + /** + * Class describing a menu item with an associated action + */ + public static class Command { + private final String title; + private final ScheduledCommand command; + + /** + * Creates a Command object, which is used as an action entry in the + * Menu + * + * @param t + * a title string + * @param cmd + * a scheduled command that is executed when this item is + * selected + */ + public Command(String t, ScheduledCommand cmd) { + title = t; + command = cmd; + } + + /** + * Returns the title of this command item + * + * @return a title string + */ + public final String getTitle() { + return title; + } + + /** + * Returns the actual scheduled command of this command item + * + * @return a scheduled command + */ + public final ScheduledCommand getCommand() { + return command; + } + } + + /** + * A menu object, providing a complete system for building a hierarchical + * menu bar system. + */ + public static class Menu { + + private final String title; + private final MenuBar menubar; + private final List<Menu> children; + private final List<Command> items; + + /** + * Create base-level menu, without a title. This is the root menu bar, + * which can be attached to a client application window. All other Menus + * should be added as child menus to this Menu, in order to maintain a + * nice hierarchy. + */ + private Menu() { + title = ""; + menubar = new MenuBar(); + menubar.getElement().setId("menu"); + children = new ArrayList<>(); + items = new ArrayList<>(); + } + + /** + * Create a sub-menu, with a title. + * + * @param title + */ + public Menu(String title) { + this.title = title; + menubar = new MenuBar(true); + children = new ArrayList<>(); + items = new ArrayList<>(); + } + + /** + * Return the GWT {@link MenuBar} object that provides the widget for + * this Menu + * + * @return a menubar object + */ + public MenuBar getMenuBar() { + return menubar; + } + + /** + * Returns the title of this menu entry + * + * @return a title string + */ + public String getTitle() { + return title; + } + + /** + * Adds a child menu entry to this menu. The title for this entry is + * taken from the Menu object argument. + * + * @param m + * another Menu object + */ + public void addChildMenu(Menu m) { + menubar.addItem(m.title, m.menubar); + children.add(m); + } + + /** + * Tests for the existence of a child menu by title at this level of the + * menu hierarchy + * + * @param title + * a title string + * @return true, if this menu has a direct child menu with the specified + * title, otherwise false + */ + public boolean hasChildMenu(String title) { + return getChildMenu(title) != null; + } + + /** + * Gets a reference to a child menu with a certain title, that is a + * direct child of this menu level. + * + * @param title + * a title string + * @return a Menu object with the specified title string, or null, if + * this menu doesn't have a direct child with the specified + * title. + */ + public Menu getChildMenu(String title) { + for (Menu m : children) { + if (m.title.equals(title)) { + return m; + } + } + return null; + } + + /** + * Adds a command item to the menu. When the entry is clicked, the + * command is executed. + * + * @param cmd + * a command object. + */ + public void addCommand(Command cmd) { + menubar.addItem(cmd.title, cmd.command); + items.add(cmd); + } + + /** + * Tests for the existence of a {@link Command} that is the direct child + * of this level of menu. + * + * @param title + * the command's title + * @return true, if this menu level includes a command item with the + * specified title. Otherwise false. + */ + public boolean hasCommand(String title) { + return getCommand(title) != null; + } + + /** + * Gets a reference to a {@link Command} item that is the direct child + * of this level of menu. + * + * @param title + * the command's title + * @return a command, if found in this menu level, otherwise null. + */ + public Command getCommand(String title) { + for (Command c : items) { + if (c.title.equals(title)) { + return c; + } + } + return null; + } + } + + /** + * Base level menu object, provides visible menu bar + */ + private final Menu menu; + private final T testedWidget; + + /** + * This constructor creates the basic menu bar and adds it to the top of the + * parent {@link DockLayoutPanel} + */ + protected PureGWTTestApplication(T widget) { + super(Unit.PX); + Panel menuPanel = new LayoutPanel(); + menu = new Menu(); + menuPanel.add(menu.getMenuBar()); + addNorth(menuPanel, 25); + testedWidget = widget; + } + + /** + * Connect an item to the menu structure + * + * @param cmd + * a scheduled command; see google's docs + * @param menupath + * path to the item + */ + public void addMenuCommand(String title, ScheduledCommand cmd, + String... menupath) { + Menu m = createMenuPath(menupath); + + m.addCommand(new Command(title, cmd)); + } + + /** + * Create a menu path, if one doesn't already exist, and return the last + * menu in the series. + * + * @param path + * a varargs list or array of strings describing a menu path, + * e.g. "File", "Recent", "User Files", which would result in the + * File menu having a submenu called "Recent" which would have a + * submenu called "User Files". + * @return the last Menu object specified by the path + */ + private Menu createMenuPath(String... path) { + Menu m = menu; + + for (String p : path) { + Menu sub = m.getChildMenu(p); + + if (sub == null) { + sub = new Menu(p); + m.addChildMenu(sub); + } + m = sub; + } + + return m; + } + + @Override + public Element getSubPartElement(String subPart) { + if (testedWidget instanceof SubPartAware) { + return ((SubPartAware) testedWidget).getSubPartElement(subPart); + } + return null; + } + + @Override + public String getSubPartName(Element subElement) { + if (testedWidget instanceof SubPartAware) { + return ((SubPartAware) testedWidget).getSubPartName(subElement); + } + return null; + } + + /** + * Gets the tested widget. + * + * @return tested widget + */ + public T getTestedWidget() { + return testedWidget; + } +} diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCellFocusOnResetSizeTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridCellFocusOnResetSizeTest.java index 98d5b250fc..e58d940a3d 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCellFocusOnResetSizeTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridCellFocusOnResetSizeTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertTrue; diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCheckBoxDisplayTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridCheckBoxDisplayTest.java index 87c7a7cf72..57229c9a4d 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCheckBoxDisplayTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridCheckBoxDisplayTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import org.junit.Assert; import org.junit.Test; diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientDataChangeHandlerTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridClientDataChangeHandlerTest.java index 1ff8de9100..d0d8868b72 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientDataChangeHandlerTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridClientDataChangeHandlerTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertFalse; diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java index 7969e55f66..090ed06690 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java +++ b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java @@ -25,15 +25,19 @@ import org.junit.Test; import com.vaadin.testbench.By; import com.vaadin.testbench.customelements.GridElement; import com.vaadin.testbench.elements.NotificationElement; +import com.vaadin.testbench.elementsbase.ServerClass; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.MultiBrowserTest; -import com.vaadin.v7.tests.components.grid.GridCellFocusOnResetSizeTest.MyGridElement; @TestCategory("grid") public class GridDefaultTextRendererTest extends MultiBrowserTest { private GridElement grid; + @ServerClass("com.vaadin.tests.widgetset.server.TestWidgetComponent") + public static class MyGridElement extends GridElement { + } + @Before public void init() { setDebug(true); |