summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2016-10-10 22:15:16 +0300
committerArtur Signell <artur@vaadin.com>2016-10-14 14:58:43 +0300
commitb3022c7f95ddca0a90ecfd8b9593941847a82998 (patch)
treed611eb3df1126c9f478b4381a1f1524ef6173baf /uitest
parentc7ca048dcc60b331c1b96bf4d3404a4abb18192e (diff)
downloadvaadin-framework-b3022c7f95ddca0a90ecfd8b9593941847a82998.tar.gz
vaadin-framework-b3022c7f95ddca0a90ecfd8b9593941847a82998.zip
Add Grid.refreshRows to allow refreshing individual rows (#16765)
Change-Id: I554d7b6ca60840bab3a032daa4847e7271086e27
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/GridRefreshRow.java118
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/GridRefreshRowTest.java73
2 files changed, 191 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridRefreshRow.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridRefreshRow.java
new file mode 100644
index 0000000000..0084e33360
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridRefreshRow.java
@@ -0,0 +1,118 @@
+package com.vaadin.tests.components.grid;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.tests.util.Person;
+import com.vaadin.tests.util.PersonContainer;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.CellReference;
+import com.vaadin.ui.Grid.CellStyleGenerator;
+import com.vaadin.ui.Grid.RowReference;
+import com.vaadin.ui.Grid.RowStyleGenerator;
+import com.vaadin.ui.HorizontalLayout;
+
+@Theme("valo")
+public class GridRefreshRow extends AbstractTestUIWithLog {
+
+ private PersonContainer container;
+ private Grid grid;
+
+ private boolean styles[] = new boolean[] { false, false, false };
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ getPage().getStyles()
+ .add(".rowstyle td {background-color: lightgreen !important;}");
+ getPage().getStyles()
+ .add("td.cellstyle {background-color: lightblue !important;}");
+ container = PersonContainer.createWithTestData(100);
+ container.addNestedContainerBean("address");
+ grid = new Grid(container);
+ grid.setWidth("800px");
+ grid.setRowStyleGenerator(new RowStyleGenerator() {
+ @Override
+ public String getStyle(RowReference row) {
+ int index = container.indexOfId(row.getItemId());
+ if (index < 3 && styles[index]) {
+ return "rowstyle";
+ }
+
+ return null;
+ }
+ });
+ grid.setCellStyleGenerator(new CellStyleGenerator() {
+ @Override
+ public String getStyle(CellReference cell) {
+ int index = container.indexOfId(cell.getItemId());
+ if (index < 3 && styles[index]
+ && "email".equals(cell.getPropertyId())) {
+ return "cellstyle";
+ }
+
+ return null;
+ }
+ });
+ addComponent(grid);
+
+ addComponents(new HorizontalLayout(update(0), update(1), update(2)));
+ Button refresh10 = new Button("Refresh 0-9", new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ grid.refreshRows(container.getItemIds(0, 9).toArray());
+ }
+ });
+ refresh10.setId("refresh10");
+ addComponents(new HorizontalLayout(refresh(0), refresh(1), refresh(2),
+ new Button("Refresh non-existant", new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ grid.refreshRows("foobar");
+ }
+ })), refresh10);
+ addComponents(new HorizontalLayout(style(0), style(1), style(2)));
+ }
+
+ private Component style(final int i) {
+ final CheckBox checkBox = new CheckBox("Style for " + i);
+ checkBox.addValueChangeListener(new ValueChangeListener() {
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ styles[i] = checkBox.getValue();
+ }
+ });
+ checkBox.setId("style" + i);
+ return checkBox;
+ }
+
+ private Component update(final int i) {
+ Button button = new Button("Update " + i, new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ Person p = container.getIdByIndex(i);
+ p.setFirstName("!" + p.getFirstName());
+ }
+ });
+ button.setId("update" + i);
+ return button;
+ }
+
+ protected Component refresh(final int i) {
+ Button button = new Button("Refresh row " + i, new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ grid.refreshRows(container.getIdByIndex(i));
+ }
+ });
+ button.setId("refresh" + i);
+ return button;
+ }
+
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridRefreshRowTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridRefreshRowTest.java
new file mode 100644
index 0000000000..3b1e2b9c88
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridRefreshRowTest.java
@@ -0,0 +1,73 @@
+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.CheckBoxElement;
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class GridRefreshRowTest extends SingleBrowserTest {
+
+ private GridElement grid;
+
+ @Test
+ public void refreshRow() {
+ openTestURL();
+ grid = $(GridElement.class).first();
+ update(0);
+ update(1);
+ update(2);
+ style(1);
+ style(2);
+
+ Assert.assertEquals("Lisa", grid.getCell(0, 1).getText());
+ Assert.assertEquals("Joshua", grid.getCell(1, 1).getText());
+ Assert.assertEquals("Marge", grid.getCell(2, 1).getText());
+
+ Assert.assertFalse(hasCssClass(grid.getRow(0), "rowstyle"));
+ Assert.assertFalse(hasCssClass(grid.getRow(1), "rowstyle"));
+ Assert.assertFalse(hasCssClass(grid.getRow(2), "rowstyle"));
+ Assert.assertFalse(hasCssClass(grid.getCell(0, 0), "cellstyle"));
+ Assert.assertFalse(hasCssClass(grid.getCell(1, 0), "cellstyle"));
+ Assert.assertFalse(hasCssClass(grid.getCell(2, 0), "cellstyle"));
+
+ refresh(1);
+ Assert.assertEquals("Lisa", grid.getCell(0, 1).getText());
+ Assert.assertEquals("!Joshua", grid.getCell(1, 1).getText());
+ Assert.assertEquals("Marge", grid.getCell(2, 1).getText());
+
+ Assert.assertFalse(hasCssClass(grid.getRow(0), "rowstyle"));
+ Assert.assertTrue(hasCssClass(grid.getRow(1), "rowstyle"));
+ Assert.assertFalse(hasCssClass(grid.getRow(2), "rowstyle"));
+ Assert.assertFalse(hasCssClass(grid.getCell(0, 0), "cellstyle"));
+ Assert.assertTrue(hasCssClass(grid.getCell(1, 0), "cellstyle"));
+ Assert.assertFalse(hasCssClass(grid.getCell(2, 0), "cellstyle"));
+
+ // Assert refreshing works many times and for many rows at the same time
+ update(0);
+ update(1);
+ update(2);
+ refresh10First();
+ Assert.assertEquals("!!Lisa", grid.getCell(0, 1).getText());
+ Assert.assertEquals("!!Joshua", grid.getCell(1, 1).getText());
+ Assert.assertEquals("!!Marge", grid.getCell(2, 1).getText());
+ }
+
+ private void refresh10First() {
+ $(ButtonElement.class).id("refresh10").click();
+ }
+
+ private void update(int i) {
+ $(ButtonElement.class).id("update" + i).click();
+ }
+
+ private void style(int i) {
+ $(CheckBoxElement.class).id("style" + i).click();
+ }
+
+ private void refresh(int i) {
+ $(ButtonElement.class).id("refresh" + i).click();
+ }
+}