/* * 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.v7.tests.server.component.treetable; import org.junit.Assert; import org.junit.Test; import com.vaadin.ui.declarative.DesignException; import com.vaadin.v7.tests.server.component.table.TableDeclarativeTest; import com.vaadin.v7.ui.Table; import com.vaadin.v7.ui.TreeTable; /** * Test declarative support for {@link TreeTable}. * * @since * @author Vaadin Ltd */ public class TreeTableDeclarativeTest extends TableDeclarativeTest { @Test public void testAttributes() { String design = "<vaadin7-tree-table animations-enabled>"; TreeTable table = getTable(); table.setAnimationsEnabled(true); testRead(design, table); testWrite(design, table); } @Test public void testHierarchy() { String design = "<vaadin7-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>" // + "</vaadin7-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 = "<vaadin7-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>" // + "</vaadin7-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 = "<vaadin7-tree-table>" // + " <table>" // + " <colgroup><col property-id=''></colgroup>" // + " <tbody>" + hierarchy + "</tbody>" // + " </table>" // + "</vaadin7-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 "vaadin7-tree-table"; } }