summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2016-09-06 15:07:37 +0300
committerArtur Signell <artur@vaadin.com>2016-09-08 11:33:14 +0000
commit74df0fadeb7d6c2a6e15b4716602d6ab7ffb54b1 (patch)
tree8d913860bc0e2fb9b14dafcf8cff149e641aea1a /uitest
parent8a4d90789ffd6a28ce29870bd176ace62f33288f (diff)
downloadvaadin-framework-74df0fadeb7d6c2a6e15b4716602d6ab7ffb54b1.tar.gz
vaadin-framework-74df0fadeb7d6c2a6e15b4716602d6ab7ffb54b1.zip
Add StyleGenerators for Grid and Columns
Change-Id: I5eedce6ac24381d657357ff07ca1ccedd804158d
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java58
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java155
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java4
3 files changed, 215 insertions, 2 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java
index a47d8b3e9e..5c9f03336e 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java
@@ -18,6 +18,7 @@ import com.vaadin.ui.Component;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.DetailsGenerator;
+import com.vaadin.ui.Grid.StyleGenerator;
import com.vaadin.ui.Label;
import com.vaadin.ui.MenuBar;
import com.vaadin.ui.MenuBar.MenuItem;
@@ -32,6 +33,17 @@ import com.vaadin.ui.renderers.ProgressBarRenderer;
@Widgetset("com.vaadin.DefaultWidgetSet")
public class GridBasics extends AbstractTestUIWithLog {
+ public static final String ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4 = "Row numbers for 3/4";
+ public static final String ROW_STYLE_GENERATOR_NONE = "None";
+ public static final String ROW_STYLE_GENERATOR_ROW_NUMBERS = "Row numbers";
+ public static final String ROW_STYLE_GENERATOR_EMPTY = "Empty string";
+ public static final String ROW_STYLE_GENERATOR_NULL = "Null";
+ public static final String CELL_STYLE_GENERATOR_NONE = "None";
+ public static final String CELL_STYLE_GENERATOR_PROPERTY_TO_STRING = "Property to string";
+ public static final String CELL_STYLE_GENERATOR_SPECIAL = "Special for 1/4 Column 1";
+ public static final String CELL_STYLE_GENERATOR_EMPTY = "Empty string";
+ public static final String CELL_STYLE_GENERATOR_NULL = "Null";
+
private static class DetailedDetailsGenerator
implements DetailsGenerator<DataObject> {
@@ -120,6 +132,8 @@ public class GridBasics extends AbstractTestUIWithLog {
dataObj -> "(" + dataObj.getRowNumber() + ", 0)");
grid.addColumn("Column 1",
dataObj -> "(" + dataObj.getRowNumber() + ", 1)");
+ grid.addColumn("Column 2",
+ dataObj -> "(" + dataObj.getRowNumber() + ", 2)");
grid.addColumn("Row Number", DataObject::getRowNumber,
new NumberRenderer());
@@ -172,6 +186,50 @@ public class GridBasics extends AbstractTestUIWithLog {
addGridMethodMenu(frozenColMenu, "" + i, i,
grid::setFrozenColumnCount);
}
+ createRowStyleMenu(stateMenu.addItem("Row style generator", null));
+ createCellStyleMenu(stateMenu.addItem("Cell style generator", null));
+ }
+
+ private void createRowStyleMenu(MenuItem rowStyleMenu) {
+ addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_NONE, null,
+ grid::setStyleGenerator);
+ addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_ROW_NUMBERS,
+ t -> "row" + t.getRowNumber(), grid::setStyleGenerator);
+ addGridMethodMenu(rowStyleMenu,
+ ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4,
+ t -> t.getRowNumber() % 4 != 0 ? "row" + t.getRowNumber()
+ : null,
+ grid::setStyleGenerator);
+ addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_EMPTY, t -> "",
+ grid::setStyleGenerator);
+ addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_NULL, t -> null,
+ grid::setStyleGenerator);
+ }
+
+ private void createCellStyleMenu(MenuItem cellStyleMenu) {
+ addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_NONE,
+ (StyleGenerator<DataObject>) null,
+ sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(sg)));
+ addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_EMPTY,
+ (StyleGenerator<DataObject>) t -> "",
+ sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(sg)));
+ addGridMethodMenu(cellStyleMenu,
+ CELL_STYLE_GENERATOR_PROPERTY_TO_STRING, null,
+ sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(
+ t -> c.getCaption().replaceAll(" ", "-"))));
+ addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_SPECIAL, null,
+ sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(t -> {
+ if (t.getRowNumber() % 4 == 1) {
+ return null;
+ } else if (t.getRowNumber() % 4 == 3
+ && c.getCaption().equals("Column 1")) {
+ return null;
+ }
+ return c.getCaption().replaceAll(" ", "_");
+ })));
+ addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_NULL,
+ (StyleGenerator<DataObject>) t -> null,
+ sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(sg)));
}
private <T> void addGridMethodMenu(MenuItem parent, String name, T value,
diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java
new file mode 100644
index 0000000000..b9b93fa884
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java
@@ -0,0 +1,155 @@
+/*
+ * 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.components.grid.basics;
+
+import static org.junit.Assert.assertFalse;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.GridElement.GridCellElement;
+import com.vaadin.testbench.elements.GridElement.GridRowElement;
+import com.vaadin.testbench.elements.NotificationElement;
+
+public class GridBasicStyleGeneratorTest extends GridBasicsTest {
+ @Test
+ public void testStyleNameGeneratorScrolling() throws Exception {
+ openTestURL();
+
+ selectRowStyleNameGenerator(
+ GridBasics.ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4);
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL);
+
+ GridRowElement row = getGridElement().getRow(2);
+ GridCellElement cell = getGridElement().getCell(3, 2);
+
+ Assert.assertTrue(hasCssClass(row, "row2"));
+ Assert.assertTrue(hasCssClass(cell, "Column_2"));
+
+ // Scroll down and verify that the old elements don't have the
+ // stylename any more
+
+ // Carefully chosen offset to hit an index % 4 without cell style
+ row = getGridElement().getRow(352);
+ cell = getGridElement().getCell(353, 2);
+
+ Assert.assertFalse(hasCssClass(row, "row352"));
+ Assert.assertFalse(hasCssClass(cell, "Column_2"));
+ }
+
+ @Test
+ public void testDisableStyleNameGenerator() throws Exception {
+ openTestURL();
+
+ selectRowStyleNameGenerator(
+ GridBasics.ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4);
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL);
+
+ // Just verify that change was effective
+ GridRowElement row = getGridElement().getRow(2);
+ GridCellElement cell = getGridElement().getCell(3, 2);
+
+ Assert.assertTrue(hasCssClass(row, "row2"));
+ Assert.assertTrue(hasCssClass(cell, "Column_2"));
+
+ // Disable the generator and check again
+ selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_NONE);
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_NONE);
+
+ row = getGridElement().getRow(2);
+ cell = getGridElement().getCell(3, 2);
+
+ Assert.assertFalse(hasCssClass(row, "row2"));
+ Assert.assertFalse(hasCssClass(cell, "Column_2"));
+ }
+
+ @Test
+ public void testChangeStyleNameGenerator() throws Exception {
+ openTestURL();
+
+ selectRowStyleNameGenerator(
+ GridBasics.ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4);
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL);
+
+ // Just verify that change was effective
+ GridRowElement row = getGridElement().getRow(2);
+ GridCellElement cell = getGridElement().getCell(3, 2);
+
+ Assert.assertTrue(hasCssClass(row, "row2"));
+ Assert.assertTrue(hasCssClass(cell, "Column_2"));
+
+ // Change the generator and check again
+ selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_NONE);
+ selectCellStyleNameGenerator(
+ GridBasics.CELL_STYLE_GENERATOR_PROPERTY_TO_STRING);
+
+ row = getGridElement().getRow(2);
+ cell = getGridElement().getCell(3, 2);
+
+ // Old styles removed?
+ Assert.assertFalse(hasCssClass(row, "row2"));
+ Assert.assertFalse(hasCssClass(cell, "Column_2"));
+
+ // New style present?
+ Assert.assertTrue(hasCssClass(cell, "Column-2"));
+ }
+
+ @Test
+ @Ignore
+ public void testCellStyleGeneratorWithSelectionColumn() {
+ setDebug(true);
+ openTestURL();
+ selectMenuPath("Component", "State", "Selection mode", "multi");
+
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL);
+
+ assertFalse("Error notification was present",
+ isElementPresent(NotificationElement.class));
+ }
+
+ private void selectRowStyleNameGenerator(String name) {
+ selectMenuPath("Component", "State", "Row style generator", name);
+ }
+
+ private void selectCellStyleNameGenerator(String name) {
+ selectMenuPath("Component", "State", "Cell style generator", name);
+ }
+
+ @Test
+ public void testEmptyStringStyleGenerator() {
+ setDebug(true);
+ openTestURL();
+
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_EMPTY);
+ selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_EMPTY);
+
+ assertFalse("Error notification was present",
+ isElementPresent(NotificationElement.class));
+ }
+
+ @Test
+ public void testNullStringStyleGenerator() {
+ setDebug(true);
+ openTestURL();
+
+ selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_NULL);
+ selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_NULL);
+
+ assertFalse("Error notification was present",
+ isElementPresent(NotificationElement.class));
+ }
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java
index 88f2eb0b20..ba7187a5ec 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java
@@ -10,8 +10,8 @@ public class GridContentTest extends GridBasicsTest {
DataObject first = getTestData().findFirst().orElse(null);
Assert.assertEquals("Text content should match row number",
first.getRowNumber().toString(),
- getGridElement().getCell(0, 4).getText());
+ getGridElement().getCell(0, 5).getText());
Assert.assertEquals("HTML content did not match", first.getHtmlString(),
- getGridElement().getCell(0, 4).getAttribute("innerHTML"));
+ getGridElement().getCell(0, 5).getAttribute("innerHTML"));
}
}