aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/components/grid
diff options
context:
space:
mode:
authorMikael Grankvist <mgrankvi@vaadin.com>2015-03-20 08:07:51 +0200
committerMarkus Koivisto <markus@vaadin.com>2015-04-10 15:26:57 +0300
commit31b3cd924e163363366e588e7e5def151a61b77d (patch)
tree5a720716cae816fab1e27ef8eb84391fff7c64f0 /uitest/src/com/vaadin/tests/components/grid
parent817906332a8ba99e8a711067c10282b8cd9a6415 (diff)
downloadvaadin-framework-31b3cd924e163363366e588e7e5def151a61b77d.tar.gz
vaadin-framework-31b3cd924e163363366e588e7e5def151a61b77d.zip
Grid header should render "the same" after changes to header (#17131)
Change-Id: I2a16ffbd59bf4863eb6a7bea8d4b590a693af637
Diffstat (limited to 'uitest/src/com/vaadin/tests/components/grid')
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChange.java183
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChangeTest.java156
2 files changed, 339 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChange.java b/uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChange.java
new file mode 100644
index 0000000000..fbd6a42a38
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChange.java
@@ -0,0 +1,183 @@
+/*
+ * 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 java.io.Serializable;
+
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.HeaderRow;
+import com.vaadin.ui.Grid.SelectionMode;
+import com.vaadin.ui.Grid.SelectionModel;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.renderers.NumberRenderer;
+
+public class GridHeaderFormatChange extends AbstractTestUI {
+
+ private static final long serialVersionUID = -2787771187365766027L;
+
+ private HeaderRow row;
+
+ public class Person implements Serializable {
+ private static final long serialVersionUID = -7995927620756317000L;
+
+ String firstName;
+ String lastName;
+ String streetAddress;
+ Integer zipCode;
+ String city;
+
+ public Person(String firstName, String lastName, String streetAddress,
+ Integer zipCode, String city) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.streetAddress = streetAddress;
+ this.zipCode = zipCode;
+ this.city = city;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getStreetAddress() {
+ return streetAddress;
+ }
+
+ public void setStreetAddress(String streetAddress) {
+ this.streetAddress = streetAddress;
+ }
+
+ public Integer getZipCode() {
+ return zipCode;
+ }
+
+ public void setZipCode(Integer zipCode) {
+ this.zipCode = zipCode;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ }
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ BeanItemContainer<Person> datasource = new BeanItemContainer<Person>(
+ Person.class);
+ final Grid grid;
+
+ datasource.addItem(new Person("Rudolph", "Reindeer", "Ruukinkatu 2-4",
+ 20540, "Turku"));
+
+ grid = new Grid(datasource);
+ grid.setWidth("600px");
+ grid.getColumn("zipCode").setRenderer(new NumberRenderer());
+ grid.setColumnOrder("firstName", "lastName", "streetAddress",
+ "zipCode", "city");
+ grid.setSelectionMode(SelectionMode.SINGLE);
+ addComponent(grid);
+
+ Button showHide = new Button("Hide firstName",
+ new Button.ClickListener() {
+ private static final long serialVersionUID = 8107530972693788705L;
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ if (grid.getColumn("firstName") != null) {
+ grid.removeColumn("firstName");
+ event.getButton().setCaption("Show firstName");
+ } else {
+ grid.addColumn("firstName");
+ grid.setColumnOrder("firstName", "lastName",
+ "streetAddress", "zipCode", "city");
+
+ event.getButton().setCaption("Hide firstName");
+ }
+ }
+ });
+ showHide.setId("show_hide");
+
+ Button selectionMode = new Button("Set multiselect",
+ new Button.ClickListener() {
+ private static final long serialVersionUID = 8107530972693788705L;
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ if (grid.getSelectionModel() instanceof SelectionModel.Single) {
+ grid.setSelectionMode(SelectionMode.MULTI);
+ } else {
+ grid.setSelectionMode(SelectionMode.SINGLE);
+ }
+ }
+ });
+ selectionMode.setId("selection_mode");
+
+ Button join = new Button("Add Join header column",
+ new Button.ClickListener() {
+ private static final long serialVersionUID = -5330801275551280623L;
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ if (row == null) {
+ row = grid.prependHeaderRow();
+ if (grid.getColumn("firstName") != null) {
+ row.join("firstName", "lastName").setText(
+ "Full Name");
+ }
+ row.join("streetAddress", "zipCode", "city")
+ .setText("Address");
+ } else {
+ grid.removeHeaderRow(row);
+ row = null;
+ }
+ }
+ });
+ join.setId("join");
+ addComponent(new HorizontalLayout(showHide, selectionMode, join));
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Grid for testing header re-rendering.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 17131;
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChangeTest.java b/uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChangeTest.java
new file mode 100644
index 0000000000..0e2a3d6ac6
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/GridHeaderFormatChangeTest.java
@@ -0,0 +1,156 @@
+/*
+ * 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 org.openqa.selenium.By;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.testbench.parallel.TestCategory;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+@TestCategory("grid")
+public class GridHeaderFormatChangeTest extends MultiBrowserTest {
+
+ @Test
+ public void testHeaderRetainsSelectAllForColumnRemoval() {
+ openTestURL();
+ GridElement grid = $(GridElement.class).first();
+
+ // Assert that we do not have the select all checkbox
+ Assert.assertTrue(
+ "Found input in header even though none should exist.", grid
+ .getHeader().findElements(By.tagName("input"))
+ .isEmpty());
+
+ // Set grid into multiselection mode
+ toggleSelectionMode();
+
+ // Assert that we now have a select all checkbox in the header
+ Assert.assertFalse("Expected one input field in header", grid
+ .getHeader().findElements(By.tagName("input")).isEmpty());
+
+ // Hide the firstName column from the grid.
+ toggleFirstName();
+
+ // Assert that we still have the select all checkbox in the header.
+ Assert.assertFalse("Header was missing checkbox after hiding column",
+ grid.getHeader().findElements(By.tagName("input")).isEmpty());
+
+ // Show the firstName column.
+ toggleFirstName();
+
+ // Assert that we still have the select all checkbox in the header.
+ Assert.assertFalse(
+ "Header was missing checkbox after bringing back column", grid
+ .getHeader().findElements(By.tagName("input"))
+ .isEmpty());
+ }
+
+ @Test
+ public void testHeaderRetainsSelectAllForJoinColumnAdd() {
+ openTestURL();
+ GridElement grid = $(GridElement.class).first();
+
+ // Assert that we do not have the select all checkbox
+ Assert.assertTrue(
+ "Found input in header even though none should exist.", grid
+ .getHeader().findElements(By.tagName("input"))
+ .isEmpty());
+
+ // Set grid into multiselection mode
+ toggleSelectionMode();
+
+ // Assert that we now have a select all checkbox in the header
+ Assert.assertFalse("Expected one input field in header", grid
+ .getHeader().findElements(By.tagName("input")).isEmpty());
+
+ // Add Join columns header
+ toggleJoin();
+
+ // Assert that we still have the select all checkbox in the header.
+ Assert.assertFalse("Header was missing checkbox after hiding column",
+ grid.getHeader().findElements(By.tagName("input")).isEmpty());
+
+ // remove Join Columns header
+ toggleJoin();
+
+ // Assert that we still have the select all checkbox in the header.
+ Assert.assertFalse(
+ "Header was missing checkbox after bringing back column", grid
+ .getHeader().findElements(By.tagName("input"))
+ .isEmpty());
+ }
+
+ @Test
+ public void selectAllShouldKeepState() {
+ openTestURL();
+ GridElement grid = $(GridElement.class).first();
+
+ // Assert that we do not have the select all checkbox
+ Assert.assertTrue(
+ "Found input in header even though none should exist.", grid
+ .getHeader().findElements(By.tagName("input"))
+ .isEmpty());
+
+ // Set grid into multiselection mode
+ toggleSelectionMode();
+
+ // Assert that we now have a select all checkbox in the header
+ Assert.assertFalse("Should not be selected after adding", grid
+ .getHeader().findElement(By.tagName("input")).isSelected());
+
+ grid.getHeader().findElement(By.tagName("input")).click();
+
+ // Assert that checkbox is checked
+ assertSelectAllChecked(
+ "Not selected even though we just clicked selection", grid);
+
+ // Hide the firstName column from the grid.
+ toggleFirstName();
+
+ // Assert that checkbox is still checked
+ assertSelectAllChecked("Selection disappeared after removing column",
+ grid);
+
+ // Show the firstName column.
+ toggleFirstName();
+
+ // Assert that checkbox is still checked
+ assertSelectAllChecked("Selection disappeared after adding column",
+ grid);
+
+ }
+
+ private void assertSelectAllChecked(String message, GridElement grid) {
+ Assert.assertTrue(message,
+ grid.getHeader().findElement(By.tagName("input")).isSelected());
+ }
+
+ private void toggleSelectionMode() {
+ $(ButtonElement.class).id("selection_mode").click();
+ }
+
+ private void toggleFirstName() {
+ $(ButtonElement.class).id("show_hide").click();
+ }
+
+ private void toggleJoin() {
+ $(ButtonElement.class).id("join").click();
+ }
+}