[richfaces-svn-commits] JBoss Rich Faces SVN: r4426 - in branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces: component and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Mon Dec 3 11:34:35 EST 2007


Author: sergeyhalipov
Date: 2007-12-03 11:34:35 -0500 (Mon, 03 Dec 2007)
New Revision: 4426

Added:
   branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/ListShuttleComponentTest.java
   branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/renderkit/
   branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/renderkit/ListShuttleRenderingTest.java
Removed:
   branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/JSFComponentTest.java
Log:
List shuttle rendering JUnit tests.
Part of http://jira.jboss.com/jira/browse/RF-1178

Deleted: branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/JSFComponentTest.java
===================================================================
--- branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/JSFComponentTest.java	2007-12-03 16:02:31 UTC (rev 4425)
+++ branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/JSFComponentTest.java	2007-12-03 16:34:35 UTC (rev 4426)
@@ -1,53 +0,0 @@
-/**
- * License Agreement.
- *
- * Rich Faces - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
- */
-
-package org.richfaces.component;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import javax.faces.component.UIComponent;
-
-/**
- * Unit test for simple Component.
- */
-public class JSFComponentTest 
-    extends TestCase
-{
-    /**
-     * Create the test case
-     *
-     * @param testName name of the test case
-     */
-    public JSFComponentTest( String testName )
-    {
-        super( testName );
-    }
-
-
-    /**
-     * Rigourous Test :-)
-     */
-    public void testComponent()
-    {
-        assertTrue( true );
-    }
-}

Copied: branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/ListShuttleComponentTest.java (from rev 4418, branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/JSFComponentTest.java)
===================================================================
--- branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/ListShuttleComponentTest.java	                        (rev 0)
+++ branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/component/ListShuttleComponentTest.java	2007-12-03 16:34:35 UTC (rev 4426)
@@ -0,0 +1,56 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.component;
+
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
+
+/**
+ * Unit test for simple Component.
+ */
+public class ListShuttleComponentTest extends AbstractAjax4JsfTestCase {
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public ListShuttleComponentTest( String testName )
+    {
+        super( testName );
+    }
+    
+    public void setUp() throws Exception {
+    	super.setUp();
+    }
+    
+    public void tearDown() throws Exception {
+    	super.tearDown();
+    }
+
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testComponent()
+    {
+        assertTrue( true );
+    }
+}

Added: branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/renderkit/ListShuttleRenderingTest.java
===================================================================
--- branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/renderkit/ListShuttleRenderingTest.java	                        (rev 0)
+++ branches/3.1.x/ui/listShuttle/src/test/java/org/richfaces/renderkit/ListShuttleRenderingTest.java	2007-12-03 16:34:35 UTC (rev 4426)
@@ -0,0 +1,398 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.renderkit;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIForm;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlOutputText;
+import javax.servlet.http.HttpServletResponse;
+
+import org.ajax4jsf.resource.InternetResource;
+import org.ajax4jsf.resource.InternetResourceBuilder;
+import org.ajax4jsf.resource.ResourceBuilderImpl;
+import org.ajax4jsf.resource.image.ImageInfo;
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
+import org.apache.commons.lang.StringUtils;
+import org.richfaces.component.UIListShuttle;
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlScript;
+
+public class ListShuttleRenderingTest extends AbstractAjax4JsfTestCase {
+	private static final int IMAGE_COUNT = 16;
+	
+	private UIListShuttle listShuttle = null;
+	private UIForm form = null;
+	private List items = null;
+    private HtmlOutputText output1 = null;
+    private HtmlOutputText output2 = null;
+    private UIColumn column1 = null;
+    private UIColumn column2 = null;
+	
+	private static final Set javaScripts = new HashSet();
+	private static final Set imageClasses = new HashSet();
+	
+	static {
+		javaScripts.add("org.ajax4jsf.javascript.PrototypeScript");
+		javaScripts.add("scripts/ShuttleUtils.js");
+		javaScripts.add("scripts/SelectItem.js");
+		javaScripts.add("scripts/LayoutManager.js");
+		javaScripts.add("scripts/Control.js");
+		javaScripts.add("scripts/OrderingList.js");
+		javaScripts.add("scripts/extend.js");
+		javaScripts.add("scripts/ListShuttle.js");
+		javaScripts.add("scripts/ListBase.js");
+		
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconUp");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconDown");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconTop");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconBottom");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconUpDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconDownDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconTopDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.images.OrderingListIconBottomDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.gradientimages.OrderingListClickedGradient");
+		imageClasses.add("org.richfaces.renderkit.html.gradientimages.OrderingListHeaderGradient");
+		imageClasses.add("org.richfaces.renderkit.html.gradientimages.OrderingListSelectGradient");
+		
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconCopy");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconCopyDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconCopyAll");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconCopyAllDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconRemove");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconRemoveAll");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconRemoveDisabled");
+		imageClasses.add("org.richfaces.renderkit.html.images.ListShuttleIconRemoveAllDisabled");
+	}
+
+	/**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+	public ListShuttleRenderingTest(String testName) {
+		super(testName);
+	}
+	
+	public void setUp() throws Exception {
+    	super.setUp();
+    	
+    	application.addComponent(UIListShuttle.COMPONENT_TYPE, "org.richfaces.component.html.HtmlListShuttle");
+    	
+    	form = new HtmlForm();
+        form.setId("form");
+        facesContext.getViewRoot().getChildren().add(form);
+        
+        listShuttle = (UIListShuttle)application.createComponent(UIListShuttle.COMPONENT_TYPE);
+        listShuttle.setId("listShuttle");
+        listShuttle.setVar("item");
+        
+        items = new ArrayList();
+    	items.add(new SimpleItem("Michael", 2000));
+    	items.add(new SimpleItem("John", 500));
+    	items.add(new SimpleItem("George", 4000));
+    	
+    	listShuttle.setSourceValue(items);
+    	
+    	output1 = new HtmlOutputText();
+    	output1.setValueBinding("value", application.createValueBinding("#{item.name}"));
+    	column1 = new UIColumn();
+    	column1.getChildren().add(output1);
+    	listShuttle.getChildren().add(column1);
+    	
+    	output2 = new HtmlOutputText();
+    	output2.setValueBinding("value", application.createValueBinding("#{item.salary}"));
+    	column2 = new UIColumn();
+    	column2.getChildren().add(output2);
+    	listShuttle.getChildren().add(column2);
+    	
+    	form.getChildren().add(listShuttle);
+    }
+    
+    public void tearDown() throws Exception {
+    	super.tearDown();
+    	
+    	items = null;
+    	output1 = null;
+    	output2 = null;
+    	column1 = null;
+    	column2 = null;
+    	listShuttle = null;
+    	form = null;
+    }
+    
+    /**
+     * Test common rendering
+     * 
+     * @throws Exception
+     */
+    public void testCommonRendering() throws Exception{
+    	HtmlPage view = renderView();
+        assertNotNull(view);
+        System.out.println(view.asXml());
+        
+        HtmlElement table = view.getHtmlElementById(listShuttle.getClientId(facesContext));
+        assertNotNull(table);
+        assertEquals("table", table.getNodeName());
+        
+        HtmlElement tbody = (HtmlElement) table.getFirstChild();
+        assertNotNull(tbody);
+        assertEquals("tbody", tbody.getTagName());
+        
+        HtmlElement tr = (HtmlElement) tbody.getFirstChild();
+        assertNotNull(tr);
+        assertEquals("tr", tr.getTagName());
+        assertNull(tr.getNextSibling());
+        
+        int childCount = 0;
+        for (Iterator it = tr.getChildIterator(); it.hasNext();) {
+        	HtmlElement td = (HtmlElement) it.next();
+        	assertNotNull(td);
+        	assertEquals("td", td.getTagName());
+        	childCount++;
+        }
+        assertEquals(4, childCount);
+        
+        HtmlElement hidden1 = view.getHtmlElementById(listShuttle.getClientId(facesContext) + "focusKeeper");
+        assertNotNull(hidden1);
+        assertEquals("input", hidden1.getNodeName());
+        assertEquals("button", hidden1.getAttributeValue("type"));
+        hidden1.getAttributeValue("style").contains("left: -32767px");
+        
+        List inputs = view.getDocumentElement().getHtmlElementsByAttribute("input", "name", listShuttle.getClientId(facesContext) + "focusKeeper");
+        assertNotNull(inputs);
+        assertEquals(1, inputs.size());
+        
+        inputs = view.getDocumentElement().getHtmlElementsByAttribute("input", "name", listShuttle.getClientId(facesContext));
+        assertNotNull(inputs);
+        assertEquals(1, inputs.size());
+    }
+
+    /**
+     * Test script rendering
+     *
+     * @throws Exception
+     */
+    public void testRenderScript() throws Exception {
+    	HtmlPage view = renderView();
+        assertNotNull(view);
+        List scripts = view.getDocumentElement().getHtmlElementsByTagName("script");
+        int foundCount = 0;
+        for (Iterator it = scripts.iterator(); it.hasNext();) {
+            HtmlScript item = (HtmlScript) it.next();
+            String srcAttr = item.getSrcAttribute();
+
+            if (StringUtils.isNotBlank(srcAttr)) {
+                boolean found = false;
+                for (Iterator srcIt = javaScripts.iterator(); srcIt.hasNext();) {
+                    String src = (String) srcIt.next();
+
+                    found = srcAttr.contains(src);
+                    if (found) {
+                    	foundCount++;
+                    	
+                    	 String uri = "http:" + srcAttr;
+                         Page page = webClient.getPage(uri);
+                         assertNotNull(page);
+                         assertTrue(page.getWebResponse().getStatusCode() == HttpServletResponse.SC_OK);
+                    	
+                        break;
+                    }
+                }
+
+                assertTrue(found);
+            }
+        }
+        assertEquals(foundCount, javaScripts.size());
+    }
+    
+    /**
+     * Test style rendering
+     *
+     * @throws Exception
+     */
+    public void testRenderStyle() throws Exception {
+    	HtmlPage view = renderView();
+        assertNotNull(view);
+        List links = view.getDocumentElement().getHtmlElementsByTagName("link");
+        assertNotNull(links);
+        assertEquals(1, links.size());
+        HtmlElement link = (HtmlElement) links.get(0);
+        assertTrue(link.getAttributeValue("href").contains("css/listShuttle.xcss"));
+        
+        String uri = "http:" + link.getAttributeValue("href");
+        Page page = webClient.getPage(uri);
+        assertNotNull(page);
+        assertTrue(page.getWebResponse().getStatusCode() == HttpServletResponse.SC_OK);
+    }
+    
+    /**
+     * Test controls rendering
+     * 
+     * @throws Exception
+     */
+    public void testRenderControls() throws Exception {
+    	HtmlPage view = renderView();
+        assertNotNull(view);
+        
+        List images = view.getDocumentElement().getHtmlElementsByTagName("img");
+        assertNotNull(images);
+        assertEquals(IMAGE_COUNT, images.size());
+        
+        for (Iterator it = images.iterator(); it.hasNext(); ) {
+        	HtmlElement img = (HtmlElement) it.next();
+        	assertNotNull(img);
+        	
+        	String uri = "http:" + img.getAttributeValue("src");
+        	Page page = webClient.getPage(uri);
+        	assertNotNull(page);
+        	assertTrue(page.getWebResponse().getStatusCode() == HttpServletResponse.SC_OK);
+        	
+        	HtmlElement div = (HtmlElement) img.getParentNode();
+        	assertNotNull(div);
+        	assertEquals("div", div.getNodeName());
+        	
+        	div = (HtmlElement) div.getParentNode();
+        	assertNotNull(div);
+        	assertEquals("div", div.getNodeName());
+        	
+        	div = (HtmlElement) div.getParentNode();
+        	assertNotNull(div);
+        	assertEquals("div", div.getNodeName());
+        	String clazz = div.getAttributeValue("class");
+        	assertNotNull(clazz);
+        	assertTrue(clazz.contains("rich-shuttle-control"));
+        }
+    }
+    
+    /**
+     * Test default images rendering
+     *
+     * @throws Exception
+     */
+    public void testRenderImages() throws Exception {
+    	HtmlPage view = renderView();
+        assertNotNull(view);
+        
+        InternetResourceBuilder builder = ResourceBuilderImpl.getInstance();
+        
+        for (Iterator it = imageClasses.iterator(); it.hasNext(); ) {
+        	String clazz = (String) it.next();
+        	builder.createResource(null, clazz);
+            InternetResource resource = builder.getResource(clazz);
+            assertNotNull(resource);
+            String uri = "http:" + resource.getUri(facesContext, null);
+            Page page = webClient.getPage(uri);
+            assertTrue(page.getWebResponse().getStatusCode() == HttpServletResponse.SC_OK);
+            ImageInfo info = new ImageInfo();
+            info.setInput(page.getWebResponse().getContentAsStream());
+            
+            assertTrue(info.check());
+            assertEquals(ImageInfo.FORMAT_GIF, info.getFormat());
+            assertTrue(info.getHeight() > 0);
+            assertTrue(info.getWidth() > 0);
+        }
+    }
+    
+    /**
+     * Test items rendering
+     * 
+     * @throws Exception
+     */
+    public void testRenderItems() throws Exception {
+    	HtmlPage view = renderView();
+        assertNotNull(view);
+        
+        HtmlElement div = view.getHtmlElementById(listShuttle.getClientId(facesContext) + "contentBox");
+        assertNotNull(div);
+        assertEquals("div", div.getNodeName());
+        
+        HtmlElement table = (HtmlElement)div.getFirstChild();
+        assertNotNull(table);
+        assertEquals("table", table.getNodeName());
+        
+        HtmlElement tbody = (HtmlElement)table.getFirstChild();
+        assertNotNull(tbody);
+        assertEquals("tbody", tbody.getNodeName());
+        
+        int rowsCount = 0;
+        for (Iterator it = tbody.getChildIterator(); it.hasNext(); ) {
+        	HtmlElement tr = (HtmlElement)it.next();
+        	assertNotNull(tr);
+            assertEquals("tr", tr.getNodeName());
+            
+            String clazz = tr.getAttributeValue("class");
+            assertNotNull(clazz);
+            assertTrue(clazz.contains("rich-shuttle-source-row"));
+            
+            int cellsCount = 0;
+            for (Iterator it2 = tr.getChildIterator(); it2.hasNext(); ) {
+            	HtmlElement td = (HtmlElement)it2.next();
+            	assertNotNull(td);
+                assertEquals("td", td.getNodeName());
+                
+                String clazz2 = td.getAttributeValue("class");
+                assertNotNull(clazz2);
+                assertTrue(clazz2.contains("rich-shuttle-source-cell"));
+                
+                cellsCount++;
+            }
+            assertEquals(2, cellsCount);
+            
+            rowsCount++;
+        }
+        assertEquals(items.size(), rowsCount);
+    }
+
+    protected class SimpleItem {
+    	String name;
+    	int salary;
+    	
+    	public SimpleItem(String name, int salary) {
+    		this.name = name;
+    		this.salary = salary;
+    	}
+    	
+		public String getName() {
+			return name;
+		}
+		public void setName(String name) {
+			this.name = name;
+		}
+		public int getSalary() {
+			return salary;
+		}
+		public void setSalary(int salary) {
+			this.salary = salary;
+		}
+    }
+
+}




More information about the richfaces-svn-commits mailing list