diff options
author | Johannes Dahlström <johannesd@vaadin.com> | 2015-04-22 15:08:30 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-04-28 10:07:46 +0000 |
commit | 9f6bec29fae7cbdde914db342ca3f825bbd1b80f (patch) | |
tree | 734142f1087403d6c166129be1a01edb0e87c57d /server/tests/src/com | |
parent | 6b3c1c02e82182333c29de984065d61f65d691f4 (diff) | |
download | vaadin-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')
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"; + } +} |