/* * JBoss, Home of Professional Open Source * Copyright , Red Hat, Inc. and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software 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 software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.richfaces.cdk.apt.processors; import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; import java.util.Collection; import java.util.Collections; import javax.lang.model.element.Modifier; import javax.lang.model.element.Name; import javax.lang.model.element.TypeElement; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.richfaces.cdk.CdkTestRunner; import org.richfaces.cdk.Mock; import org.richfaces.cdk.NamingConventions; import org.richfaces.cdk.Stub; import org.richfaces.cdk.annotations.Attribute; import org.richfaces.cdk.annotations.Description; import org.richfaces.cdk.annotations.JsfBehavior; import org.richfaces.cdk.annotations.Tag; import org.richfaces.cdk.apt.AnnotationProcessorTestBase; import org.richfaces.cdk.apt.SourceUtils; import org.richfaces.cdk.apt.SourceUtils.BeanProperty; import org.richfaces.cdk.apt.SourceUtils.SuperTypeVisitor; import org.richfaces.cdk.model.BehaviorModel; import org.richfaces.cdk.model.ComponentLibrary; import org.richfaces.cdk.model.FacesId; import org.richfaces.cdk.xmlconfig.JAXB; import com.google.inject.Inject; /** * @author akolonitsky * @since Jan 21, 2010 */ @RunWith(CdkTestRunner.class) public class BehaviorProcessorTest extends AnnotationProcessorTestBase { private static final String BEHAVIOR_CLASS_JAVA = "org/richfaces/cdk/test/component/MyBehavior.java"; private static final String MY_BEHAVIOR = "my_behavior"; @Mock private JsfBehavior behaviorAnnotation; @Mock private TypeElement componentElement; @Mock private NamingConventions conventions; @Mock private Description description; @Mock private JAXB jaxb; @Inject private ComponentLibrary library; @Stub private Name name; @Inject private BehaviorProcessor processor; @Stub private Tag tag; @Mock private SourceUtils utils; @Test @Ignore public void testProcess() throws Exception { expect(componentElement.getAnnotation(JsfBehavior.class)).andStubReturn(behaviorAnnotation); expect(behaviorAnnotation.id()).andReturn(MY_BEHAVIOR); expect(componentElement.getQualifiedName()).andReturn(name); expect(componentElement.getModifiers()).andReturn(Collections.singleton(Modifier.ABSTRACT)); expect(componentElement.getQualifiedName()).andReturn(name).atLeastOnce(); expect(behaviorAnnotation.generate()).andReturn("foo.Bar"); expect(behaviorAnnotation.tag()).andReturn(new Tag[] { tag }); expect(behaviorAnnotation.attributes()).andReturn(new String[] {}); expect(behaviorAnnotation.description()).andReturn(this.description); expect(tag.handler()).andStubReturn(""); utils.visitSupertypes((TypeElement) anyObject(), (SuperTypeVisitor) anyObject()); expectLastCall(); expect(utils.getBeanPropertiesAnnotatedWith(eq(Attribute.class), (TypeElement) anyObject())).andReturn( Collections.<BeanProperty>emptySet()); expect(utils.getDocComment((TypeElement) anyObject())).andStubReturn(null); replay(log, utils, componentElement, jaxb, conventions, behaviorAnnotation, tag, name); processor.process(componentElement, library); verify(log, utils, componentElement, jaxb, conventions, behaviorAnnotation, tag, name); Collection<BehaviorModel> behaviors = library.getBehaviors(); assertEquals(1, behaviors.size()); for (BehaviorModel model : behaviors) { FacesId id = model.getId(); if (id != null) { assertEquals(MY_BEHAVIOR, id.toString()); } } } @Override protected Iterable<String> sources() { return Collections.singleton(BEHAVIOR_CLASS_JAVA); } }