Package org.richfaces.component

Source Code of org.richfaces.component.PanelMenuComponentTest

/**
* License Agreement.
*
*  JBoss RichFaces - Ajax4jsf Component Library
*
* 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 java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIForm;
import javax.faces.component.html.HtmlForm;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

import org.ajax4jsf.resource.image.ImageInfo;
import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;

import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.sun.faces.application.ActionListenerImpl;

/**
* Unit test for simple Component.
*/
public class PanelMenuComponentTest extends AbstractAjax4JsfTestCase {
  private static Set javaScripts = new HashSet();
  private static final boolean IS_PAGE_AVAILABILITY_CHECK = true;
 
  private String[] imageResources = new String[]{
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconChevron",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconChevronDown",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconChevronUp",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconDisc",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconGrid",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconTriangle",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconTriangleDown",
            "org.richfaces.renderkit.html.iconimages.PanelMenuIconTriangleUp"
    };
 
  static {
        javaScripts.add("org.ajax4jsf.javascript.AjaxScript");
        javaScripts.add("org.ajax4jsf.javascript.PrototypeScript");
        javaScripts.add("org/richfaces/renderkit/html/scripts/utils.js");
        javaScripts.add("org/richfaces/renderkit/html/scripts/panelMenu.js");
        javaScripts.add("org/ajax4jsf/javascript/scripts/form.js");
        javaScripts.add("org/richfaces/renderkit/html/scripts/form.js");
    }
 
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public PanelMenuComponentTest( String testName )
    {
        super( testName );
    }

    private UIForm form;
    private UIPanelMenu panelMenu;
    private UIPanelMenuGroup group1;
    private UIPanelMenuGroup group2;
    private UIPanelMenuGroup group3;
    private UIPanelMenuItem item1;
    private UIPanelMenuItem item2;
   
    public void setUp() throws Exception {
      super.setUp();
     
      application.addComponent("org.richfaces.panelMenu", "org.richfaces.component.html.HtmlPanelMenu");
      application.addComponent("org.richfaces.panelMenuGroup", "org.richfaces.component.html.HtmlPanelMenuGroup");
      application.addComponent("org.richfaces.panelMenuItem", "org.richfaces.component.html.HtmlPanelMenuItem");
     
      form = new HtmlForm();
      form.setId("form");
      facesContext.getViewRoot().getChildren().add(form);
     
      panelMenu = (UIPanelMenu)application.createComponent("org.richfaces.panelMenu");
      panelMenu.setId("panelMenu");
      form.getChildren().add(panelMenu);
     
      group1 = (UIPanelMenuGroup)application.createComponent("org.richfaces.panelMenuGroup");
      group1.setId("group1");
      group1.setDisabled(true);
      panelMenu.getChildren().add(group1);
     
      group2 = (UIPanelMenuGroup)application.createComponent("org.richfaces.panelMenuGroup");
      group2.setId("group2");
      panelMenu.getChildren().add(group2);
     
      item1 = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item1.setId("item1");
      group1.getChildren().add(item1);
     
      group3 = (UIPanelMenuGroup)application.createComponent("org.richfaces.panelMenuGroup");
      group3.setId("subgroup");
      group2.getChildren().add(group3);
     
      item2 = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item2.setId("item2");
      item2.setDisabled(true);
      group2.getChildren().add(item2);
     
      // Items for testing standard icons.
      UIPanelMenuItem item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("triangleItem");
      item.setIcon("triangle");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("spacerItem");
      item.setIcon("spacer");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("triangleDownItem");
      item.setIcon("triangleDown");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("triangleUpItem");
      item.setIcon("triangleUp");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("chevronItem");
      item.setIcon("chevron");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("chevronUpItem");
      item.setIcon("chevronUp");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("chevronDownItem");
      item.setIcon("chevronDown");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("discItem");
      item.setIcon("disc");
      group2.getChildren().add(item);
     
      item = (UIPanelMenuItem)application.createComponent("org.richfaces.panelMenuItem");
      item.setId("gridItem");
      item.setIcon("grid");
      group2.getChildren().add(item);
     
    }
   
    public void tearDown() throws Exception {
      super.tearDown();
     
      item1 = null;
      item2 = null;
      group1 = null;
      group2 = null;
      form = null;
    }
   
    /**
     * Test component rendering
     *
     * @throws Exception
     */
    public void testRender() throws Exception {
      HtmlPage page = renderView();
        assertNotNull(page);
        //System.out.println(page.asXml());
       
        HtmlElement div = page.getHtmlElementById(panelMenu.getClientId(facesContext));
        assertNotNull(div);
        assertEquals("div", div.getNodeName());
       
        HtmlElement firstGroupDiv = page.getHtmlElementById(group1.getClientId(facesContext));
        assertNotNull(firstGroupDiv);
        assertEquals("div", firstGroupDiv.getNodeName());
       
        String styleClass = firstGroupDiv.getAttributeValue("class");
        assertTrue(styleClass.contains("rich-pmenu-top-group-div"));
       
        HtmlElement firstGroupHide = page.getHtmlElementById("tablehide" + group1.getClientId(facesContext));
        assertNotNull(firstGroupHide);
        assertEquals("table", firstGroupHide.getNodeName());
       
        styleClass = firstGroupHide.getAttributeValue("class");
        assertTrue(styleClass.contains("rich-pmenu-top-group"));
        assertTrue(styleClass.contains("rich-pmenu-group"));
        assertTrue(styleClass.contains("rich-pmenu-disabled-element"));
       
        HtmlElement subGroupDiv = page.getHtmlElementById(group3.getClientId(facesContext));
        assertNotNull(subGroupDiv);
        assertEquals("div", subGroupDiv.getNodeName());
       
        HtmlElement subGroupHide = page.getHtmlElementById("tablehide" + group3.getClientId(facesContext));
        assertNotNull(subGroupHide);
        assertEquals("table", subGroupHide.getNodeName());
       
        styleClass = subGroupHide.getAttributeValue("class");
        assertTrue(styleClass.contains("rich-pmenu-group"));
       
        HtmlElement leftIcon = page.getHtmlElementById("leftIcon" + group1.getClientId(facesContext));
        assertNotNull(leftIcon);
        assertEquals("img", leftIcon.getNodeName());
       
        HtmlElement rightIcon = page.getHtmlElementById("rightIcon" + group1.getClientId(facesContext));
        assertNotNull(rightIcon);
        assertEquals("img", rightIcon.getNodeName());
       
        HtmlElement firstItemHide = page.getHtmlElementById("tablehide" + item1.getClientId(facesContext));
        assertNotNull(firstItemHide);
        assertEquals("table", firstItemHide.getNodeName());
       
        styleClass = firstItemHide.getAttributeValue("class");
        assertTrue(styleClass.contains("rich-pmenu-item"));
       
        leftIcon = page.getHtmlElementById("leftIcon" + item1.getClientId(facesContext));
        assertNotNull(leftIcon);
        assertEquals("img", leftIcon.getNodeName());
       
        rightIcon = page.getHtmlElementById("rightIcon" + item1.getClientId(facesContext));
        assertNotNull(rightIcon);
        assertEquals("img", rightIcon.getNodeName());
       
        HtmlElement secondItemHide = page.getHtmlElementById("tablehide" + item2.getClientId(facesContext));
        assertNotNull(secondItemHide);
        assertEquals("table", secondItemHide.getNodeName());
       
        styleClass = secondItemHide.getAttributeValue("class");
        assertTrue(styleClass.contains("rich-pmenu-disabled-element"));
    }
   
    /**
     * Test style rendering
     *
     * @throws Exception
     */
    public void testRenderStyle() throws Exception {
      HtmlPage view = renderView();
        assertNotNull(view);
        List links = view.getDocumentElement().getHtmlElementsByTagName("link");
        assertEquals(1, links.size());
        HtmlElement link = (HtmlElement) links.get(0);
        assertTrue(link.getAttributeValue("href").contains("css/panelMenu.xcss"));
        assertNotNull(getResourceIfPresent("org/richfaces/renderkit/html/css/panelMenu.xcss"));
    }
   
    /**
     * Test script rendering
     *
     * @throws Exception
     */
    public void testRenderScript() throws Exception {
      HtmlPage page = renderView();
        assertNotNull(page);
        assertEquals(getCountValidScripts(page, javaScripts, IS_PAGE_AVAILABILITY_CHECK).intValue(), javaScripts.size());
    }
   
    public void testRenderImages() throws Exception {
      HtmlPage view = renderView();
        assertNotNull(view);

        for (int i = 0; i < imageResources.length; i++) {
          ImageInfo info = getImageResource(imageResources[i]);
        assertNotNull(info);
            assertEquals(ImageInfo.FORMAT_GIF, info.getFormat());
        }
    }
   
    public void testAddRemoveListener() throws Exception {
      ActionListener listener = new ActionListenerImpl();
      group2.addActionListener(listener);
      HtmlPage view = renderView();
        assertNotNull(view);

        assertNotNull(group2.getActionListeners());
        assertTrue(group2.getActionListeners().length > 0);
        assertEquals(listener, group2.getActionListeners()[0]);
        group2.removeActionListener(listener);
        assertTrue(group2.getActionListeners().length == 0);
    }
   
    public void testBroadcast() throws Exception {
      group3.addActionListener(testListener);
      HtmlPage view = renderView();
        assertNotNull(view);
        group3.broadcast(new ActionEvent(group3));
        assertTrue(facesContext.getMessages(group3.getClientId(facesContext)).hasNext());
    }
   
    public void testQueueEvent() throws Exception {
      HtmlPage view = renderView();
        assertNotNull(view);
        group3.queueEvent(new ActionEvent(group3));
    }
   
    ActionListener testListener = new ActionListener(){

    public void processAction(ActionEvent event)
        throws AbortProcessingException {
      facesContext.addMessage(group3.getClientId(facesContext), new FacesMessage("Method invoked!"));
    }
     
    };
}
TOP

Related Classes of org.richfaces.component.PanelMenuComponentTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.