UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

126 lines (96 loc) 3.31 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2012 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Mustafa Sak (msak) ************************************************************************ */ /** * @ignore(qx.test.ui.tree.virtual.Node) * @ignore(qx.test.ui.tree.virtual.NodeDefered) * @ignore(qx.test.ui.tree.virtual.Leaf) */ qx.Class.define("qx.test.ui.tree.virtual.TreeItem", { extend : qx.test.ui.tree.virtual.AbstractTreeTest, construct : function() { this.base(arguments); qx.Class.define("qx.test.ui.tree.virtual.NodeDefered", { extend : qx.test.ui.tree.virtual.Leaf, properties : { children : { check : "qx.data.Array", event : "changeChildren", apply : "_applyEventPropagation", nullable : true } }, destruct : function() { if (!qx.core.ObjectRegistry.inShutDown) { var children = this.getChildren(); if (children) { for (var i = 0; i < children.getLength(); i++) { children.getItem(i).dispose(); } children.dispose(); } } } }); }, members : { testChildrenSetDeferred : function() { var that = this; var root = new qx.test.ui.tree.virtual.Node("Root node"); var node = new qx.test.ui.tree.virtual.NodeDefered("Node1"); root.getChildren().push(node); this.tree.setLabelPath("name"); this.tree.setChildProperty("children"); this.tree.setModel(root); this.flush(); window.setTimeout(that.resumeHandler(function() { // add new node node.setChildren(new qx.data.Array([new qx.test.ui.tree.virtual.NodeDefered("Node1.1")])); // check for event listener that.assertTrue(node.hasListener("changeChildren"), "There must be a 'changeChildren' event listener!"); that.assertTrue(node.getChildren().hasListener("changeLength"), "There must be a 'changeLength' event listener on children array!"); // check for open indent var widget = that.__getWidgetForm(node); that.assertTrue(widget.isOpenable(), "Must be openable!"); // dispose and check if event listeners are removed root.dispose(); that.assertFalse(node.hasListener("changeChildren"), "After disposing, there has not be a 'changeChildren' event listener!"); that.assertFalse(node.getChildren().hasListener("changeLength"), "After disposing, there must not be a 'changeLength' event listener on children array!"); }), 0); // children property not set yet this.assertNull(node.getChildren(), "Must be null"); this.wait(50); }, __getWidgetForm : function(modelItem) { var widget = null; var row = this.tree.getLookupTable().indexOf(modelItem); if (row > -1) { widget = this.tree._layer.getRenderedCellWidget(row, 0); } return widget; } } });