aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2014-07-15 20:44:59 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2014-07-22 09:10:57 +0000
commitaca2902c9cafcb02db19a0cdd42b1488786c0f56 (patch)
treeca9d222f8b4771d9fec91858c05a40d2009727a8 /uitest/src/com/vaadin/tests
parent59091b486a91754612b555f854d65b77a82eb6b4 (diff)
downloadvaadin-framework-aca2902c9cafcb02db19a0cdd42b1488786c0f56.tar.gz
vaadin-framework-aca2902c9cafcb02db19a0cdd42b1488786c0f56.zip
Client-side Grid header/footer rewrite: add add/remove rows support (#13334)
Currently supported: * Adding and removal of header and footer rows * Header is single-row by default * Footer is zero-row by default * Text captions TODO: * Column spanning * HTML content * Widget content * Component content * Sorting/Indicators * Server side API * Shared state handling Change-Id: I54b5062f31e38e872ca64394dfa02f866a1af202
Diffstat (limited to 'uitest/src/com/vaadin/tests')
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java52
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java76
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java52
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java89
4 files changed, 235 insertions, 34 deletions
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java
index e126994f34..80110ddc81 100644
--- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java
@@ -17,20 +17,58 @@ package com.vaadin.tests.components.grid.basicfeatures;
import static org.junit.Assert.assertEquals;
-import java.util.List;
-
import org.junit.Test;
-import com.vaadin.testbench.TestBenchElement;
-
-public class GridFooterTest extends GridBasicClientFeaturesTest {
+public class GridFooterTest extends GridStaticSectionTest {
@Test
public void testFooterVisibility() throws Exception {
openTestURL();
// Footer should have zero rows by default
- List<TestBenchElement> cells = getGridFooterRowCells();
- assertEquals(0, cells.size());
+ assertEquals(0, getGridFooterRowCells().size());
+ }
+
+ @Test
+ public void testAddRows() throws Exception {
+ openTestURL();
+
+ selectMenuPath("Component", "Footer", "Append row");
+
+ assertFooterCount(1);
+ assertFooterTexts(0, 0);
+
+ selectMenuPath("Component", "Footer", "Prepend row");
+
+ assertFooterCount(2);
+ assertFooterTexts(1, 0);
+ assertFooterTexts(0, 1);
+
+ selectMenuPath("Component", "Footer", "Append row");
+
+ assertFooterCount(3);
+ assertFooterTexts(1, 0);
+ assertFooterTexts(0, 1);
+ assertFooterTexts(2, 2);
+ }
+
+ @Test
+ public void testRemoveRows() throws Exception {
+ openTestURL();
+
+ selectMenuPath("Component", "Footer", "Prepend row");
+ selectMenuPath("Component", "Footer", "Append row");
+
+ selectMenuPath("Component", "Footer", "Remove top row");
+
+ assertFooterCount(1);
+ assertFooterTexts(1, 0);
+
+ selectMenuPath("Component", "Footer", "Remove bottom row");
+ assertFooterCount(0);
+ }
+
+ private void assertFooterCount(int count) {
+ assertEquals("footer count", count, getGridElement().getFooterCount());
}
}
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java
index 716e3b30fc..c1bc4cdd73 100644
--- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java
@@ -23,28 +23,21 @@ import org.junit.Test;
import com.vaadin.testbench.TestBenchElement;
-public class GridHeaderTest extends GridBasicClientFeaturesTest {
+public class GridHeaderTest extends GridStaticSectionTest {
@Test
public void testHeaderVisibility() throws Exception {
openTestURL();
// Column headers should be visible by default
- List<TestBenchElement> cells = getGridHeaderRowCells();
- assertEquals(GridBasicFeatures.COLUMNS, cells.size());
+ assertEquals(GridBasicFeatures.COLUMNS, getGridHeaderRowCells().size());
}
@Test
public void testHeaderCaptions() throws Exception {
openTestURL();
- List<TestBenchElement> cells = getGridHeaderRowCells();
-
- int i = 0;
- for (TestBenchElement cell : cells) {
- assertText("Column " + i, cell);
- i++;
- }
+ assertHeaderTexts(0, 0);
}
@Test
@@ -57,23 +50,66 @@ public class GridHeaderTest extends GridBasicClientFeaturesTest {
List<TestBenchElement> cells = getGridHeaderRowCells();
assertEquals(GridBasicFeatures.COLUMNS - 2, cells.size());
- assertText("Column 0", cells.get(0));
- assertText("Column 2", cells.get(1));
- assertText("Column 4", cells.get(2));
+ assertText("Header (0,0)", cells.get(0));
+ assertText("Header (0,2)", cells.get(1));
+ assertText("Header (0,4)", cells.get(2));
selectMenuPath("Component", "Columns", "Column 3", "Visible");
cells = getGridHeaderRowCells();
assertEquals(GridBasicFeatures.COLUMNS - 1, cells.size());
- assertText("Column 0", cells.get(0));
- assertText("Column 2", cells.get(1));
- assertText("Column 3", cells.get(2));
- assertText("Column 4", cells.get(3));
+ assertText("Header (0,0)", cells.get(0));
+ assertText("Header (0,2)", cells.get(1));
+ assertText("Header (0,3)", cells.get(2));
+ assertText("Header (0,4)", cells.get(3));
+ }
+
+ @Test
+ public void testAddRows() throws Exception {
+ openTestURL();
+
+ selectMenuPath("Component", "Header", "Append row");
+
+ assertHeaderCount(2);
+ assertHeaderTexts(0, 0);
+ assertHeaderTexts(1, 1);
+
+ selectMenuPath("Component", "Header", "Prepend row");
+
+ assertHeaderCount(3);
+ assertHeaderTexts(2, 0);
+ assertHeaderTexts(0, 1);
+ assertHeaderTexts(1, 2);
+
+ selectMenuPath("Component", "Header", "Append row");
+
+ assertHeaderCount(4);
+ assertHeaderTexts(2, 0);
+ assertHeaderTexts(0, 1);
+ assertHeaderTexts(1, 2);
+ assertHeaderTexts(3, 3);
+ }
+
+ @Test
+ public void testRemoveRows() throws Exception {
+ openTestURL();
+
+ selectMenuPath("Component", "Header", "Prepend row");
+ selectMenuPath("Component", "Header", "Append row");
+
+ selectMenuPath("Component", "Header", "Remove top row");
+
+ assertHeaderCount(2);
+ assertHeaderTexts(0, 0);
+ assertHeaderTexts(2, 1);
+
+ selectMenuPath("Component", "Header", "Remove bottom row");
+ assertHeaderCount(1);
+ assertHeaderTexts(0, 0);
}
- private static void assertText(String text, TestBenchElement e) {
- // TBE.getText returns "" if the element is scrolled out of view
- assertEquals(text, e.getAttribute("innerHTML"));
+ private void assertHeaderCount(int count) {
+ assertEquals("header count", count, getGridElement().getHeaderCount());
}
}
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java
new file mode 100644
index 0000000000..8f6739e16d
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.basicfeatures;
+
+import static org.junit.Assert.assertEquals;
+
+import com.vaadin.testbench.TestBenchElement;
+
+/**
+ * Abstract base class for header and footer tests.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public abstract class GridStaticSectionTest extends GridBasicClientFeaturesTest {
+
+ protected void assertHeaderTexts(int headerId, int rowIndex) {
+ int i = 0;
+ for (TestBenchElement cell : getGridElement().getHeaderCells(rowIndex)) {
+ assertText(String.format("Header (%d,%d)", headerId, i), cell);
+ i++;
+ }
+ assertEquals("number of header columns", GridBasicFeatures.COLUMNS, i);
+ }
+
+ protected void assertFooterTexts(int footerId, int rowIndex) {
+ int i = 0;
+ for (TestBenchElement cell : getGridElement().getFooterCells(rowIndex)) {
+ assertText(String.format("Footer (%d,%d)", footerId, i), cell);
+ i++;
+ }
+ assertEquals("number of footer columns", GridBasicFeatures.COLUMNS, i);
+ }
+
+ protected static void assertText(String text, TestBenchElement e) {
+ // TBE.getText returns "" if the element is scrolled out of view
+ assertEquals(text, e.getAttribute("innerHTML"));
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java b/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java
index 182a5bfa29..8564b149d8 100644
--- a/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java
+++ b/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java
@@ -25,7 +25,10 @@ import com.vaadin.client.ui.grid.FlyweightCell;
import com.vaadin.client.ui.grid.Grid;
import com.vaadin.client.ui.grid.Grid.SelectionMode;
import com.vaadin.client.ui.grid.GridColumn;
-import com.vaadin.client.ui.grid.GridHeader.HeaderCell;
+import com.vaadin.client.ui.grid.GridFooter;
+import com.vaadin.client.ui.grid.GridFooter.FooterRow;
+import com.vaadin.client.ui.grid.GridHeader;
+import com.vaadin.client.ui.grid.GridHeader.HeaderRow;
import com.vaadin.client.ui.grid.Renderer;
import com.vaadin.client.ui.grid.datasources.ListDataSource;
import com.vaadin.client.ui.grid.renderers.DateRenderer;
@@ -193,12 +196,7 @@ public class GridBasicClientFeatures extends
});
}
- // Set captions to column headers
-
- for (int i = 0; i < COLUMNS; ++i) {
- HeaderCell cell = grid.getHeader().getRow(0).getCell(i);
- cell.setText("Column " + i);
- }
+ setHeaderTexts(grid.getHeader().getRow(0));
//
// Populate the menu
@@ -206,6 +204,8 @@ public class GridBasicClientFeatures extends
createStateMenu();
createColumnsMenu();
+ createHeaderMenu();
+ createFooterMenu();
grid.getElement().getStyle().setZIndex(0);
add(grid);
@@ -250,6 +250,81 @@ public class GridBasicClientFeatures extends
}
}
+ private int headerCounter = 0;
+ private int footerCounter = 0;
+
+ private void setHeaderTexts(HeaderRow row) {
+ for (int i = 0; i < COLUMNS; ++i) {
+ row.getCell(i).setText("Header (" + headerCounter + "," + i + ")");
+ }
+ headerCounter++;
+ }
+
+ private void setFooterTexts(FooterRow row) {
+ for (int i = 0; i < COLUMNS; ++i) {
+ row.getCell(i).setText("Footer (" + footerCounter + "," + i + ")");
+ }
+ footerCounter++;
+ }
+
+ private void createHeaderMenu() {
+ final GridHeader header = grid.getHeader();
+ addMenuCommand("Prepend row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ setHeaderTexts(header.prependRow());
+ }
+ }, "Component", "Header");
+ addMenuCommand("Append row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ setHeaderTexts(header.appendRow());
+ }
+ }, "Component", "Header");
+ addMenuCommand("Remove top row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ header.removeRow(0);
+ }
+ }, "Component", "Header");
+ addMenuCommand("Remove bottom row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ header.removeRow(header.getRowCount() - 1);
+ }
+ }, "Component", "Header");
+ }
+
+ private void createFooterMenu() {
+
+ final GridFooter footer = grid.getFooter();
+
+ addMenuCommand("Prepend row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ setFooterTexts(footer.prependRow());
+ }
+ }, "Component", "Footer");
+ addMenuCommand("Append row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ setFooterTexts(footer.appendRow());
+ }
+ }, "Component", "Footer");
+ addMenuCommand("Remove top row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ footer.removeRow(0);
+ }
+ }, "Component", "Footer");
+ addMenuCommand("Remove bottom row", new ScheduledCommand() {
+ @Override
+ public void execute() {
+ footer.removeRow(footer.getRowCount() - 1);
+ }
+ }, "Component", "Footer");
+ }
+
/**
* Creates a a renderer for a {@link Renderers}
*/