aboutsummaryrefslogtreecommitdiffstats
path: root/server/tests/src/com
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2015-04-22 15:08:30 +0300
committerVaadin Code Review <review@vaadin.com>2015-04-28 10:07:46 +0000
commit9f6bec29fae7cbdde914db342ca3f825bbd1b80f (patch)
tree734142f1087403d6c166129be1a01edb0e87c57d /server/tests/src/com
parent6b3c1c02e82182333c29de984065d61f65d691f4 (diff)
downloadvaadin-framework-9f6bec29fae7cbdde914db342ca3f825bbd1b80f.tar.gz
vaadin-framework-9f6bec29fae7cbdde914db342ca3f825bbd1b80f.zip
Fix TreeTable declarative support (#16368)
Also fix some small issues in Table declarative: * Write null property values as empty strings instead of NPEing * Read/write item ids from/to <tr item-id="..."> Change-Id: Ieccc3f49c5021f8a4a50d4ea671f9086ad8f997c
Diffstat (limited to 'server/tests/src/com')
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTest.java46
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTestBase.java21
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/treetable/TreeTableDeclarativeTest.java156
3 files changed, 196 insertions, 27 deletions
diff --git a/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTest.java b/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTest.java
index 796d30049e..c395d8501c 100644
--- a/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTest.java
+++ b/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTest.java
@@ -36,12 +36,14 @@ public class TableDeclarativeTest extends TableDeclarativeTestBase {
@Test
public void testBasicAttributes() {
- String design = "<v-table page-length=30 cache-rate=3 selectable=true editable=true "
+ String design = "<"
+ + getTag()
+ + " page-length=30 cache-rate=3 selectable=true editable=true "
+ "sortable=false sort-ascending=false sort-container-property-id=foo "
+ "drag-mode=row multi-select-mode=simple column-header-mode=id row-header-mode=id "
+ "column-reordering-allowed=true column-collapsing-allowed=true />";
- Table table = new Table();
+ Table table = getTable();
table.setPageLength(30);
table.setCacheRate(3);
table.setSelectable(true);
@@ -65,17 +67,18 @@ public class TableDeclarativeTest extends TableDeclarativeTestBase {
@Test
public void testColumns() {
- String design = "<v-table column-collapsing-allowed=true>" //
+ String design = "<"
+ + getTag()
+ + " column-collapsing-allowed=true>" //
+ " <table>" //
+ " <colgroup>"
+ " <col property-id='foo' width=300>"
+ " <col property-id='bar' center expand=1 collapsible=false>"
+ " <col property-id='baz' right expand=2 collapsed=true>"
+ " </colgroup>" //
- + " </table>" //
- + "</v-table>";
+ + " </table>";
- Table table = new Table();
+ Table table = getTable();
table.setColumnCollapsingAllowed(true);
table.addContainerProperty("foo", String.class, null);
@@ -98,7 +101,8 @@ public class TableDeclarativeTest extends TableDeclarativeTestBase {
@Test
public void testHeadersFooters() {
- String design = "<v-table>" //
+ String design = "<" + getTag()
+ + ">" //
+ " <table>" //
+ " <colgroup><col property-id=foo><col property-id=bar></colgroup>" //
+ " <thead>" //
@@ -107,10 +111,9 @@ public class TableDeclarativeTest extends TableDeclarativeTestBase {
+ " <tfoot>" //
+ " <tr><td>foo<td>bar" //
+ " </tfoot>" //
- + " </table>" //
- + "</v-table>";
+ + " </table>";
- Table table = new Table();
+ Table table = getTable();
table.setFooterVisible(true);
table.addContainerProperty("foo", String.class, null);
@@ -129,27 +132,26 @@ public class TableDeclarativeTest extends TableDeclarativeTestBase {
@Test
public void testInlineData() {
- String design = "<v-table> "//
+ String design = "<"
+ + getTag()
+ + ">" //
+ " <table>" //
+ " <colgroup>"
+ " <col property-id='foo' />"
+ " <col property-id='bar' />"
+ " <col property-id='baz' />" //
- + " </colgroup>"
- + " <thead>"
+ + " </colgroup>" + " <thead>"
+ " <tr><th>Description<th>Milestone<th>Status</tr>"
- + " </thead>"
- + " <tbody>"
- + " <tr><td>r1c1</td><td>r1c2</td><td>r1c3</td>" //
- + " <tr><td>r2c1</td><td>r2c2</td><td>r2c3</td>" //
+ + " </thead>" + " <tbody>"
+ + " <tr item-id=1><td>r1c1</td><td>r1c2</td><td>r1c3</td>" //
+ + " <tr item-id=2><td>r2c1</td><td>r2c2</td><td>r2c3</td>" //
+ " </tbody>" //
+ " <tfoot>" //
+ " <tr><td>F1<td>F2<td>F3</tr>" //
+ " </tfoot>" //
- + " </table>" //
- + "</v-table>";
+ + " </table>";
- Table table = new Table();
+ Table table = getTable();
table.addContainerProperty("foo", String.class, null);
table.addContainerProperty("bar", String.class, null);
table.addContainerProperty("baz", String.class, null);
@@ -157,8 +159,8 @@ public class TableDeclarativeTest extends TableDeclarativeTestBase {
table.setColumnFooter("foo", "F1");
table.setColumnFooter("bar", "F2");
table.setColumnFooter("baz", "F3");
- table.addItem(new Object[] { "r1c1", "r1c2", "r1c3" }, null);
- table.addItem(new Object[] { "r2c1", "r2c2", "r2c3" }, null);
+ table.addItem(new Object[] { "r1c1", "r1c2", "r1c3" }, "1");
+ table.addItem(new Object[] { "r2c1", "r2c2", "r2c3" }, "2");
table.setFooterVisible(true);
testRead(design, table);
diff --git a/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTestBase.java b/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTestBase.java
index 65c9475684..d909d98a36 100644
--- a/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTestBase.java
+++ b/server/tests/src/com/vaadin/tests/server/component/table/TableDeclarativeTestBase.java
@@ -20,7 +20,8 @@ import static org.junit.Assert.assertTrue;
import com.vaadin.tests.design.DeclarativeTestBase;
import com.vaadin.ui.Table;
-public class TableDeclarativeTestBase extends DeclarativeTestBase<Table> {
+public abstract class TableDeclarativeTestBase extends
+ DeclarativeTestBase<Table> {
@Override
public Table testRead(String design, Table expected) {
@@ -30,20 +31,30 @@ public class TableDeclarativeTestBase extends DeclarativeTestBase<Table> {
return read;
}
- private void compareBody(Table read, Table expected) {
- assertEquals(expected.getItemIds().size(), read.getItemIds().size());
+ protected Table getTable() {
+ return new Table();
+ }
+
+ protected String getTag() {
+ return "v-table";
+ }
+
+ protected void compareBody(Table read, Table expected) {
+ assertEquals("number of items", expected.getItemIds().size(), read
+ .getItemIds().size());
for (Object rowId : expected.getItemIds()) {
assertTrue(read.containsId(rowId));
for (Object propertyId : read.getVisibleColumns()) {
Object expectedItem = expected.getContainerProperty(rowId,
propertyId);
Object readItem = read.getContainerProperty(rowId, propertyId);
- assertEquals(expectedItem, readItem);
+ assertEquals("property '" + propertyId + "'", expectedItem,
+ readItem);
}
}
}
- private void compareColumns(Table read, Table expected) {
+ protected void compareColumns(Table read, Table expected) {
for (Object pid : expected.getVisibleColumns()) {
String col = "column '" + pid + "'";
assertEquals(col + " width", expected.getColumnWidth(pid),
diff --git a/server/tests/src/com/vaadin/tests/server/component/treetable/TreeTableDeclarativeTest.java b/server/tests/src/com/vaadin/tests/server/component/treetable/TreeTableDeclarativeTest.java
new file mode 100644
index 0000000000..5f487aa021
--- /dev/null
+++ b/server/tests/src/com/vaadin/tests/server/component/treetable/TreeTableDeclarativeTest.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.server.component.treetable;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.tests.server.component.table.TableDeclarativeTest;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.TreeTable;
+import com.vaadin.ui.declarative.DesignException;
+
+/**
+ * Test declarative support for {@link TreeTable}.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public class TreeTableDeclarativeTest extends TableDeclarativeTest {
+
+ @Test
+ public void testAttributes() {
+ String design = "<v-tree-table animations-enabled=true>";
+ TreeTable table = getTable();
+ table.setAnimationsEnabled(true);
+
+ testRead(design, table);
+ testWrite(design, table);
+ }
+
+ @Test
+ public void testHierarchy() {
+ String design = "<v-tree-table>" //
+ + "<table>" //
+ + "<colgroup><col property-id=''></colgroup>" //
+ + "<tbody>" //
+ + " <tr item-id='1'><td></tr>" //
+ + " <tr depth=1 item-id='1.1'><td></tr>" //
+ + " <tr depth=1 item-id='1.2'><td></tr>" //
+ + " <tr depth=2 item-id='1.2.1'><td></tr>" //
+ + " <tr depth=3 item-id='1.2.1.1'><td></tr>" //
+ + " <tr depth=2 item-id='1.2.2'><td></tr>" //
+ + " <tr item-id='2'><td></tr>" //
+ + " <tr depth=1 item-id='2.1'><td></tr>" //
+ + "</tbody>" //
+ + "</table>" //
+ + "</v-tree-table>";
+
+ TreeTable table = getTable();
+ table.addContainerProperty("", String.class, "");
+
+ table.addItem("1");
+ table.addItem("1.1");
+ table.setParent("1.1", "1");
+ table.addItem("1.2");
+ table.setParent("1.2", "1");
+ table.addItem("1.2.1");
+ table.setParent("1.2.1", "1.2");
+ table.addItem("1.2.1.1");
+ table.setParent("1.2.1.1", "1.2.1");
+ table.addItem("1.2.2");
+ table.setParent("1.2.2", "1.2");
+ table.addItem("2");
+ table.addItem("2.1");
+ table.setParent("2.1", "2");
+
+ testRead(design, table);
+ testWrite(design, table, true);
+ }
+
+ @Test
+ public void testCollapsed() {
+ String design = "<v-tree-table>" //
+ + " <table>" //
+ + " <colgroup><col property-id=''></colgroup>" //
+ + " <tbody>" //
+ + " <tr item-id='1' collapsed=false><td></tr>" //
+ + " <tr depth=1 item-id='1.1'><td></tr>" //
+ + " <tr depth=2 item-id='1.1.1'><td></tr>" //
+ + " </tbody>" //
+ + " </table>" //
+ + "</v-tree-table>";
+
+ TreeTable table = getTable();
+ table.addContainerProperty("", String.class, "");
+
+ table.addItem("1");
+ table.setCollapsed("1", false);
+ table.addItem("1.1");
+ table.setParent("1.1", "1");
+ table.addItem("1.1.1");
+ table.setParent("1.1.1", "1.1");
+
+ testRead(design, table);
+ testWrite(design, table, true);
+ }
+
+ @Test
+ public void testMalformedHierarchy() {
+ assertMalformed("<tr depth=-4><td>");
+ assertMalformed("<tr depth=1><td>");
+ assertMalformed("<tr><td><tr depth=3><td>");
+ }
+
+ protected void assertMalformed(String hierarchy) {
+ String design = "<v-tree-table>" //
+ + " <table>" //
+ + " <colgroup><col property-id=''></colgroup>" //
+ + " <tbody>" + hierarchy + "</tbody>" //
+ + " </table>" //
+ + "</v-tree-table>";
+
+ try {
+ read(design);
+ Assert.fail("Malformed hierarchy should fail: " + hierarchy);
+ } catch (DesignException expected) {
+ }
+ }
+
+ @Override
+ protected void compareBody(Table read, Table expected) {
+ super.compareBody(read, expected);
+
+ for (Object itemId : read.getItemIds()) {
+ Assert.assertEquals("parent of item " + itemId,
+ ((TreeTable) expected).getParent(itemId),
+ ((TreeTable) read).getParent(itemId));
+ Assert.assertEquals("collapsed status of item " + itemId,
+ ((TreeTable) expected).isCollapsed(itemId),
+ ((TreeTable) read).isCollapsed(itemId));
+ }
+ }
+
+ @Override
+ protected TreeTable getTable() {
+ return new TreeTable();
+ }
+
+ @Override
+ protected String getTag() {
+ return "v-tree-table";
+ }
+}