Package org.richfaces.component

Source Code of org.richfaces.component.ContextMenuComponentTest

/**
* 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 java.util.HashSet;
import java.util.Set;

import javax.faces.FacesException;
import javax.faces.component.UIPanel;
import javax.faces.component.UIParameter;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlPanelGroup;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.PropertyNotFoundException;
import javax.faces.el.ValueBinding;

import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;

import com.gargoylesoftware.htmlunit.html.DomNode;
import com.gargoylesoftware.htmlunit.html.DomText;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

/**
* Unit test for context menu component.
*/
public class ContextMenuComponentTest extends AbstractAjax4JsfTestCase {
  private static final boolean IS_PAGE_AVAILABILITY_CHECK = true;
  private static Set javaScripts = new HashSet();
  private static final String PARAM_SEQUENCE = "{'name':'value'}";
 
  private UIContextMenu menu = null;
  private HtmlForm form = null;
  private UIPanel panel = null;
  private UIMenuItem menuItem = null;
  private UIParameter param = null;
  private UIMenuGroup menuGroup = null;
 
  static {
    javaScripts.add("org.ajax4jsf.javascript.PrototypeScript");
    javaScripts.add("org.ajax4jsf.javascript.AjaxScript");
    javaScripts.add("org/richfaces/renderkit/html/scripts/utils.js");
    javaScripts.add("org/richfaces/renderkit/html/scripts/json/json-dom.js");
    javaScripts.add("org/richfaces/renderkit/html/scripts/context-menu.js");
    javaScripts.add("org/richfaces/renderkit/html/scripts/menu.js");
    javaScripts.add("org/richfaces/renderkit/html/scripts/available.js");
    javaScripts.add("org/richfaces/renderkit/html/scripts/jquery/jquery.js");
    javaScripts.add("org/richfaces/renderkit/html/scripts/jquery.utils.js");
  }
 
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public ContextMenuComponentTest( String testName ) {
        super( testName );
    }

    public void setUp() throws Exception {
      super.setUp();
     
      application.addComponent(UIContextMenu.COMPONENT_TYPE, "org.richfaces.component.html.ContextMenu");
      application.addComponent(UIMenuItem.COMPONENT_TYPE, "org.richfaces.component.html.HtmlMenuItem");
      application.addComponent(UIMenuGroup.COMPONENT_TYPE, "org.richfaces.component.html.HtmlMenuGroup");
     
      form = new HtmlForm();
        form.setId("form");
        facesContext.getViewRoot().getChildren().add(form);
       
        panel = new HtmlPanelGroup();
        panel.setId("output");
       
        menu = (UIContextMenu)application.createComponent(UIContextMenu.COMPONENT_TYPE);
        menu.setId("contextMenu");
       
        param = new UIParameter();
        param.setId("param");
        param.setName("name");
        param.setValue("value");
        menu.getChildren().add(param);
       
        menuGroup = (UIMenuGroup)application.createComponent(UIMenuGroup.COMPONENT_TYPE);
       
        panel.getChildren().add(menu);
       
        menuItem = (UIMenuItem)application.createComponent(UIMenuItem.COMPONENT_TYPE);
        menuItem.setId("menuItem");
        menuItem.setValue("value");
        menuGroup.getChildren().add(menuItem);
       
        form.getChildren().add(panel);
    }
   
    public void tearDown() throws Exception {
      param = null;
      menuItem = null;
      menuGroup =  null;
      menu = null;
      form = null;
      panel = null;
     
      super.tearDown();
    }

    /**
     * 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());
    }
   
    /**
     * Test common rendering
     *
     * @throws Exception
     */
    public void testRender() throws Exception {
      HtmlPage view = renderView();
        assertNotNull(view);
       
        HtmlElement div = view.getHtmlElementById(menu.getClientId(facesContext));
        assertNotNull(div);
        assertEquals("div", div.getNodeName());
       
        HtmlElement script = (HtmlElement) div.getFirstChild();
        assertNotNull(script);
        assertEquals("script", script.getNodeName());
       
        DomNode scriptBody = (DomNode) script.getFirstChild();
        assertNotNull(scriptBody);
        assertTrue(scriptBody instanceof DomText);
        String scriptText = scriptBody.asText();
        assertNotNull(scriptText);
        scriptText = scriptText.replaceAll("\\s", "");
       
        assertTrue(scriptText.startsWith("varcontextMenu=newRichfaces.ContextMenu"));
        assertTrue(scriptText.contains(PARAM_SEQUENCE));
       
        assertNull(script.getNextSibling());
       
        menu.setEvent(null);
        menu.setValueBinding("event", new ValueBinding() {

      public Class getType(FacesContext arg0) throws EvaluationException,
          PropertyNotFoundException {
        return String.class;
      }

      public Object getValue(FacesContext arg0)
          throws EvaluationException, PropertyNotFoundException {
        return null;
      }

      public boolean isReadOnly(FacesContext arg0)
          throws EvaluationException, PropertyNotFoundException {
        return true;
      }

      public void setValue(FacesContext arg0, Object arg1)
          throws EvaluationException, PropertyNotFoundException {
      }
         
        });
        try {
      renderView();
      assertTrue("Attribute 'event' is not set, but exception isn't thrown!", false);
    } catch (FacesException e) {
     
    }
    }
   
}
TOP

Related Classes of org.richfaces.component.ContextMenuComponentTest

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.