Package org.richfaces.renderkit

Source Code of org.richfaces.renderkit.EditorRendererTest

/**
* 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.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.faces.component.UIParameter;

import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
import org.richfaces.component.UIEditor;

import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlScript;

public class EditorRendererTest extends AbstractAjax4JsfTestCase {

  /** Name of test property file with configuration parameters */
  private final static String PARAMETERS_PROPERTY_FILE_NAME = "editorFull";
  /** Name of test property file with custom plugins parameters */
  private final static String CUSTOM_PLUGINS_PROPERTY_FILE_NAME = "myplugins";
 
  /** Test f:param name */
  private final static String FPARAM_NAME = "fparam_name";
  /** Test f:param value */
  private final static String FPARAM_VALUE = "fparam_value";
 
  /** UIEditor instance */
  private UIEditor editor;

  /**
   * Constructor with test name parameter
   * @param name
   */
  public EditorRendererTest(String name) {
    super(name);
  }

  /* (non-Javadoc)
   * @see org.ajax4jsf.tests.AbstractAjax4JsfTestCase#setUp()
   */
  public void setUp() throws Exception {
    super.setUp();
    editor = (UIEditor) application.createComponent("org.richfaces.Editor");
    editor.setValue("Some value");

    UIParameter param1 = (UIParameter) application
        .createComponent("javax.faces.Parameter");
    param1.setName(FPARAM_NAME);
    param1.setValue(FPARAM_VALUE);
    editor.getChildren().add(param1);

    facesContext.getViewRoot().getChildren().add(editor);
  }


  /**
   * Method to test EditorRenderer writing configuration script parameters
   * from properties file.
   *
   * @throws Exception
   */
  @SuppressWarnings("unchecked")
  public void testWritingScriptParametersFromProperties() throws Exception {

    editor.setConfiguration(PARAMETERS_PROPERTY_FILE_NAME);
    Properties parameters = loadProperties(PARAMETERS_PROPERTY_FILE_NAME);

    HtmlPage page = renderView();
    assertNotNull(page);

    List scripts = page.getDocumentHtmlElement().getHtmlElementsByTagName(
        "script");

    for (Iterator it = scripts.iterator(); it.hasNext();) {
      HtmlScript item = (HtmlScript) it.next();
      if (item.getFirstDomChild() != null) {
        String scriptBodyString = item.getFirstDomChild().toString();
        for (Object key : parameters.keySet()) {
          String keyString = key.toString();
          String valueString = (parameters.get(key)).toString();
          if (valueString.indexOf("\"") != -1) {
            valueString = valueString.replaceAll("\"", "");
          }
          assertTrue("writed script parameters not contains '"
              + keyString + "'", scriptBodyString
              .contains(keyString));
          assertTrue("writed script parameters not contains '"
              + valueString + "'", scriptBodyString
              .contains(valueString));
        }
      }

    }
  }

  /**
   * Method to test EditorRenderer writing configuration script parameters
   * from f:params children.
   *
   * @throws Exception
   */
  @SuppressWarnings("unchecked")
  public void testWritingScriptParametersFromFParams() throws Exception {

    HtmlPage page = renderView();
    assertNotNull(page);

    List scripts = page.getDocumentHtmlElement().getHtmlElementsByTagName(
        "script");

    for (Iterator it = scripts.iterator(); it.hasNext();) {
      HtmlScript item = (HtmlScript) it.next();
      if (item.getFirstDomChild() != null) {
        String scriptBodyString = item.getFirstDomChild().toString();
        assertTrue(
            "writed script parameters not contains defined in Editor f:param",
            scriptBodyString.contains(FPARAM_NAME));
        assertTrue(
            "writed script parameters not contains defined in Editor f:param",
            scriptBodyString.contains(FPARAM_VALUE));
      }

    }

  }

  /**
   * Method to test EditorRenderer writing configuration script parameters
   * from UIEditor attributes.
   *
   * @throws Exception
   */
  @SuppressWarnings("unchecked")
  public void testWritingScriptParametersFromAttributes() throws Exception {
    editor.setAutoResize(true);
    editor.setDialogType("window");
    editor.setHeight(300);
    editor.setWidth(300);
    editor.setLanguage("ru");
    editor.setPlugins("safari,spellchecker,pagebreak");
    editor.setReadonly(true);
    editor.setSkin("o2k7");
    editor.setTheme("advanced");

    HtmlPage page = renderView();
    assertNotNull(page);

    List scripts = page.getDocumentHtmlElement().getHtmlElementsByTagName(
        "script");
   
    for (Iterator it = scripts.iterator(); it.hasNext();) {
      HtmlScript item = (HtmlScript) it.next();
      if (item.getFirstDomChild() != null) {
        String scriptBodyString = item.getFirstDomChild().toString();
        assertTrue(scriptBodyString
            .contains("tinyMceParams.auto_resize = true"));
        assertTrue(scriptBodyString
            .contains("tinyMceParams.dialog_type ="));
        assertTrue(scriptBodyString.contains(editor.getDialogType()));
        assertTrue(scriptBodyString
            .contains("tinyMceParams.width = 300"));
        assertTrue(scriptBodyString
            .contains("tinyMceParams.height = 300"));
        assertTrue(scriptBodyString
            .contains("tinyMceParams.language ="));
        assertTrue(scriptBodyString.contains(editor.getLanguage()));
        assertTrue(scriptBodyString.contains("tinyMceParams.plugins ="));
        assertTrue(scriptBodyString.contains(editor.getPlugins()));
        assertTrue(scriptBodyString.contains("tinyMceParams.theme ="));
        assertTrue(scriptBodyString.contains(editor.getTheme()));
        assertTrue(scriptBodyString.contains("tinyMceParams.skin ="));
        assertTrue(scriptBodyString.contains(editor.getSkin()));
        assertTrue(scriptBodyString
            .contains("tinyMceParams.readonly = true"));
      }

    }

  }
 
  /**
   * Method to test EditorRenderer writing custom plugins loading calls from
   * properties file.
   *
   * @throws Exception
   */
  @SuppressWarnings("unchecked")
  public void testWritingScriptParametersForCustomPlugins() throws Exception {

    editor.setCustomPlugins(CUSTOM_PLUGINS_PROPERTY_FILE_NAME);
    Properties parameters = loadProperties(CUSTOM_PLUGINS_PROPERTY_FILE_NAME);

    HtmlPage page = renderView();
    assertNotNull(page);

    List scripts = page.getDocumentHtmlElement().getHtmlElementsByTagName(
        "script");

    for (Iterator it = scripts.iterator(); it.hasNext();) {
      HtmlScript item = (HtmlScript) it.next();
      if (item.getFirstDomChild() != null) {
        String scriptBodyString = item.getFirstDomChild().toString();
        for (Object key : parameters.keySet()) {
          String keyString = key.toString();
          String valueString = (parameters.get(key)).toString();
          if (valueString.indexOf("\"") != -1) {
            valueString = valueString.replaceAll("\"", "");
          }
          assertTrue(scriptBodyString.contains("tinymce.PluginManager.load("));
          assertTrue(scriptBodyString.contains(keyString));
          assertTrue(scriptBodyString.contains(valueString));
        }
      }

    }
  }

  /**
   * Method to load properties from property file
   *
   * @param name - properties file name
   * @return Properties
   * @throws IOException
   */
  private Properties loadProperties(String name) throws IOException {
    Properties properties = new Properties();

    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    InputStream is = loader.getResourceAsStream(name + ".properties");
    if (is == null) {
      fail("Can't load propertioes file for test");
    }
    properties.load(is);
    return properties;
  }

}
TOP

Related Classes of org.richfaces.renderkit.EditorRendererTest

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.