/*
* $Id$
*
* 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.cdk.xmlconfig;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.richfaces.cdk.As;
import org.richfaces.cdk.CdkClassLoader;
import org.richfaces.cdk.CdkTestBase;
import org.richfaces.cdk.CdkTestRunner;
import org.richfaces.cdk.FileManager;
import org.richfaces.cdk.Mock;
import org.richfaces.cdk.Source;
import org.richfaces.cdk.Sources;
import org.richfaces.cdk.model.ClassName;
import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.ComponentModel;
import org.richfaces.cdk.model.FacesId;
import org.richfaces.cdk.model.FacetModel;
import org.richfaces.cdk.model.PropertyBase;
import org.richfaces.cdk.model.RenderKitModel;
import org.richfaces.cdk.xmlconfig.model.FacesConfigBean;
import org.xml.sax.ext.EntityResolver2;
import com.google.common.collect.Iterables;
import com.google.inject.Binder;
import com.google.inject.Inject;
/**
* <p class="changed_added_4_0">
* </p>
*
* @author asmirnov@exadel.com
*
*/
@RunWith(CdkTestRunner.class)
public class FacesConfigTest extends CdkTestBase {
@Inject
@As(JAXBBinding.class)
JAXB jaxbBinding;
@Inject
FragmentParser parser;
@Inject
@As(CdkEntityResolver.class)
EntityResolver2 resolver;
@Mock
@Source(Sources.FACES_CONFIGS)
private FileManager configSource;
@Mock
@Source(Sources.RENDERER_TEMPLATES)
private FileManager templatesSource;
@Override
public void configure(Binder binder) {
super.configure(binder);
binder.bind(CdkClassLoader.class).toInstance(createClassLoader());
}
@Test
public void testComponentUnmarshal() throws Exception {
FacesConfigBean library = jaxbBinding.unmarshal("urn:resource:org/richfaces/cdk/xmlconfig/component.xml",
ComponentLibrary.FACES_CONFIG_SCHEMA_LOCATION, FacesConfigBean.class);
assertEquals(1, library.getComponents().size());
ComponentModel component = library.getComponents().get(0);
assertEquals(FacesId.parseId("javax.faces.Panel"), component.getId());
assertEquals(FacesId.parseId("javax.faces.Panel"), component.getFamily());
assertEquals(ClassName.parseName("javax.faces.component.UIPanel"), component.getTargetClass());
assertEquals("panel.gif", component.getIcon().getSmallIcon());
assertEquals("panel-large.gif", component.getIcon().getLargeIcon());
assertEquals("Panel component", component.getDescription());
assertEquals("Panel", component.getDisplayName());
assertTrue(component.getGenerate());
FacetModel facet = Iterables.getOnlyElement(component.getFacets());
assertEquals("header", facet.getName());
assertEquals("Header facet", facet.getDescription());
assertTrue(facet.getGenerate());
Collection<PropertyBase> attributes = component.getAttributes();
assertEquals(3, attributes.size());
}
@Test
public void testRenderKitUnmarshall() throws Exception {
FacesConfigBean library = jaxbBinding.unmarshal("urn:resource:org/richfaces/cdk/xmlconfig/renderkit.xml",
ComponentLibrary.FACES_CONFIG_SCHEMA_LOCATION, FacesConfigBean.class);
List<RenderKitModel> renderKits = library.getRenderKits();
assertEquals(2, renderKits.size());
RenderKitModel renderKit = renderKits.get(0);
assertEquals(new FacesId("HTML_BASIC"), renderKit.getId());
assertEquals(1, renderKit.getRenderers().size());
assertEquals(new FacesId("RDFa"), renderKits.get(1).getId());
}
}