You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/06/15 01:10:47 UTC
svn commit: r1135841 - in /tapestry/tapestry5/trunk/tapestry-core/src/test:
groovy/org/apache/tapestry5/integration/app1/
java/org/apache/tapestry5/integration/app1/
java/org/apache/tapestry5/integration/app1/pages/
resources/org/apache/tapestry5/integ...
Author: hlship
Date: Tue Jun 14 23:10:46 2011
New Revision: 1135841
URL: http://svn.apache.org/viewvc?rev=1135841&view=rev
Log:
Add partially functional tests for the Tree component
Added:
tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/TreeTests.groovy
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java
- copied, changed from r1135708, tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java
Removed:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FileSystemTreeModel.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java
tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TreeDemo.tml
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/TreeTests.groovy
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/TreeTests.groovy?rev=1135841&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/TreeTests.groovy (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/TreeTests.groovy Tue Jun 14 23:10:46 2011
@@ -0,0 +1,51 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// 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 org.apache.tapestry5.integration.app1
+
+import org.apache.tapestry5.test.SeleniumTestCase
+import org.testng.annotations.Test
+
+class TreeTests extends SeleniumTestCase
+{
+ /**
+ * Haven't figured out how to get Selenium to click the actual elements, never mine
+ * coordinate the wait for the Ajax. So far its just been manual testing.
+ */
+ @Test
+ void basics() {
+
+ openBaseURL()
+
+ clickAndWait "link=Tree Component Demo"
+
+ clickAndWait "link=clear expansions"
+
+ if (false) {
+ click "//span[@class='t-tree-icon'][2]"
+
+ sleep 100
+
+ click "//span[@class='t-tree-icon'][3]"
+
+ sleep 100
+
+ assertTextPresent "Agricola"
+
+ clickAndWait "link=Redraw"
+
+ assertTextPresent "Agricola"
+ }
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java?rev=1135841&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java Tue Jun 14 23:10:46 2011
@@ -0,0 +1,67 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// 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 org.apache.tapestry5.integration.app1;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+
+public class Stuff
+{
+ public final String uuid = UUID.randomUUID().toString();
+
+ public final String name;
+
+ public final List<Stuff> children = CollectionFactory.newList();
+
+ public Stuff(String name)
+ {
+ this.name = name;
+ }
+
+ public Stuff addChildrenNamed(String... names)
+ {
+ for (String name : names)
+ {
+ children.add(new Stuff(name));
+ }
+
+ return this;
+ }
+
+ public Stuff addChild(Stuff child)
+ {
+ children.add(child);
+
+ return this;
+ }
+
+ public Stuff seek(String uuid)
+ {
+ if (this.uuid.equals(uuid))
+ return this;
+
+ for (Stuff child : children)
+ {
+ Stuff match = child.seek(uuid);
+
+ if (match != null)
+ return match;
+ }
+
+ return null;
+ }
+}
Copied: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java (from r1135708, tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java?p2=tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java&r1=1135708&r2=1135841&rev=1135841&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/StuffTreeModelAdapter.java Tue Jun 14 23:10:46 2011
@@ -12,27 +12,31 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
+package org.apache.tapestry5.integration.app1;
-import java.io.File;
+import java.util.List;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.corelib.components.Tree;
-import org.apache.tapestry5.integration.app1.FileSystemTreeModel;
-import org.apache.tapestry5.tree.TreeModel;
+import org.apache.tapestry5.tree.TreeModelAdapter;
-public class TreeDemo
+public class StuffTreeModelAdapter implements TreeModelAdapter<Stuff>
{
- @InjectComponent
- private Tree fs;
+ public boolean isLeaf(Stuff value)
+ {
+ return value.children.isEmpty();
+ }
+
+ public boolean hasChildren(Stuff value)
+ {
+ return !value.children.isEmpty();
+ }
- public TreeModel<File> getFileSystemTreeModel()
+ public List<Stuff> getChildren(Stuff value)
{
- return new FileSystemTreeModel();
+ return value.children;
}
- void onActionFromClear()
+ public String getLabel(Stuff value)
{
- fs.clearExpansions();
+ return value.name;
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java?rev=1135841&r1=1135840&r2=1135841&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeDemo.java Tue Jun 14 23:10:46 2011
@@ -14,25 +14,58 @@
package org.apache.tapestry5.integration.app1.pages;
-import java.io.File;
-
+import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.corelib.components.Tree;
-import org.apache.tapestry5.integration.app1.FileSystemTreeModel;
+import org.apache.tapestry5.integration.app1.Stuff;
+import org.apache.tapestry5.integration.app1.StuffTreeModelAdapter;
+import org.apache.tapestry5.tree.DefaultTreeModel;
import org.apache.tapestry5.tree.TreeModel;
public class TreeDemo
{
@InjectComponent
- private Tree fs;
+ private Tree tree;
+
+ private static final Stuff rootStuff = new Stuff("<root>");
- public TreeModel<File> getFileSystemTreeModel()
+ static
{
- return new FileSystemTreeModel();
+ rootStuff.addChild(new Stuff("Pets").addChildrenNamed("Oscar", "Gromit", "Max", "Roger", "Cooper"));
+ rootStuff.addChild(new Stuff("Games").addChild(
+ new Stuff("Board Games").addChildrenNamed("Settlers of Catan", "Agricola", "Ra", "Risk", "Dvonn"))
+ .addChild(new Stuff("Card Games").addChildrenNamed("Magic the Gathering", "Dominion", "Mu")));
+
+ Stuff numbers = new Stuff("Numbers");
+
+ for (int i = 0; i < 10000; i++)
+ {
+ numbers.addChild(new Stuff(Integer.toString(i)));
+ }
+
+ rootStuff.addChild(numbers);
+ }
+
+ public TreeModel<Stuff> getStuffModel()
+ {
+ ValueEncoder<Stuff> encoder = new ValueEncoder<Stuff>()
+ {
+ public String toClient(Stuff value)
+ {
+ return value.uuid;
+ }
+
+ public Stuff toValue(String clientValue)
+ {
+ return rootStuff.seek(clientValue);
+ }
+ };
+
+ return new DefaultTreeModel<Stuff>(encoder, new StuffTreeModelAdapter(), rootStuff.children);
}
void onActionFromClear()
{
- fs.clearExpansions();
+ tree.clearExpansions();
}
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TreeDemo.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TreeDemo.tml?rev=1135841&r1=1135840&r2=1135841&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TreeDemo.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TreeDemo.tml Tue Jun 14 23:10:46 2011
@@ -2,7 +2,7 @@
<h1>Tree Demo</h1>
- <t:tree t:id="fs" model="fileSystemTreeModel"/>
+ <t:tree class="test-hook" t:id="tree" model="stuffModel"/>
<p>
[