//$Id: ComponentTest.java 6435 2007-10-08 18:15:49Z pmuir $
package org.jboss.seam.test.unit;
import org.jboss.seam.Component;
import org.jboss.seam.ComponentType;
import org.jboss.seam.ScopeType;
import org.jboss.seam.Seam;
import org.jboss.seam.core.Init;
import org.jboss.seam.core.Manager;
import org.jboss.seam.persistence.ManagedHibernateSession;
import org.jboss.seam.persistence.ManagedPersistenceContext;
import org.testng.annotations.Test;
public class ComponentTest
{
@Test
public void testStaticMethods()
{
assert Seam.getComponentName(Bar.class).equals("bar");
assert Seam.getComponentType(Bar.class)==ComponentType.JAVA_BEAN;
assert Seam.getComponentScope(Bar.class)==ScopeType.CONVERSATION;
assert Seam.getComponentName(Foo.class).equals("foo");
assert Seam.getComponentType(Foo.class)==ComponentType.JAVA_BEAN;
assert Seam.getComponentScope(Foo.class)==ScopeType.SESSION;
//assert Seam.getBeanClass(Foo.class)==Foo.class;
assert Seam.getEjbName(EjbBean.class).equals("EjbBean");
assert Seam.getEjbName(Foo.class)==null;
assert Seam.isInterceptionEnabled(Foo.class)==true;
}
@Test
public void testComponent()
{
Component c = new Component(Bar.class);
assert c.getName().equals("bar");
assert c.getBeanClass()==Bar.class;
assert c.getType()==ComponentType.JAVA_BEAN;
assert c.getScope()==ScopeType.CONVERSATION;
assert c.hasDestroyMethod();
assert c.hasCreateMethod();
assert c.getCreateMethod().getName().equals("create");
assert c.getDestroyMethod().getName().equals("destroy");
assert c.getInAttributes().size()==2;
assert c.getUnwrapMethod()==null;
assert c.getOutAttributes().size()==2;
assert c.getRemoveMethods().size()==0;
assert c.isInstance( new Bar() );
c = new Component(Foo.class);
assert c.getName().equals("foo");
assert c.getBeanClass()==Foo.class;
assert c.getType()==ComponentType.JAVA_BEAN;
assert c.getScope()==ScopeType.SESSION;
assert !c.hasDestroyMethod();
assert !c.hasCreateMethod();
assert c.getCreateMethod()==null;
assert c.getDestroyMethod()==null;
assert c.getInAttributes().size()==0;
assert c.getUnwrapMethod()==null;
assert c.getOutAttributes().size()==0;
assert c.getRemoveMethods().size()==1;
assert c.isInstance( new Foo() );
c = new Component(EjbBean.class);
assert c.getName().equals("ejb");
assert c.getBeanClass()==EjbBean.class;
assert c.getType()==ComponentType.STATEFUL_SESSION_BEAN;
assert c.getScope()==ScopeType.EVENT;
assert c.hasDestroyMethod();
assert !c.hasDefaultRemoveMethod();
assert !c.hasCreateMethod();
assert c.getCreateMethod()==null;
assert c.getDestroyMethod()!=null;
assert c.getDefaultRemoveMethod()==null;
assert c.getInAttributes().size()==0;
assert c.getUnwrapMethod()==null;
assert c.getOutAttributes().size()==0;
assert c.getRemoveMethods().size()==1;
assert c.isInstance( new Ejb() {
public void destroy() {}
public void foo() {}
} );
}
public void testBuiltInComponents()
{
Component c = new Component(Manager.class);
assert c.getName().equals("org.jboss.seam.conversationManager");
assert c.getBeanClass()==Manager.class;
assert c.getType()==ComponentType.JAVA_BEAN;
assert c.getScope()==ScopeType.EVENT;
assert c.hasDestroyMethod();
assert !c.hasCreateMethod();
assert c.getCreateMethod()==null;
assert c.getDestroyMethod().getName().equals("destroy");
assert c.getInAttributes().size()==0;
assert c.getUnwrapMethod()==null;
assert c.getOutAttributes().size()==0;
assert c.getRemoveMethods().size()==0;
c = new Component(Init.class);
assert c.getName().equals("org.jboss.seam.settings");
assert c.getBeanClass()==Init.class;
assert c.getType()==ComponentType.JAVA_BEAN;
assert c.getScope()==ScopeType.APPLICATION;
assert !c.hasDestroyMethod();
assert !c.hasCreateMethod();
assert c.getCreateMethod()==null;
assert c.getDestroyMethod()==null;
assert c.getInAttributes().size()==0;
assert c.getUnwrapMethod()==null;
assert c.getOutAttributes().size()==0;
assert c.getRemoveMethods().size()==0;
c = new Component(ManagedPersistenceContext.class, "pc");
assert c.getName().equals("pc");
assert c.getBeanClass()==ManagedPersistenceContext.class;
assert c.getType()==ComponentType.JAVA_BEAN;
assert c.getScope()==ScopeType.CONVERSATION;
assert c.hasDestroyMethod();
assert c.hasCreateMethod();
assert c.getCreateMethod().getName().equals("create");
assert c.getDestroyMethod().getName().equals("destroy");
assert c.getInAttributes().size()==0;
assert c.getUnwrapMethod().getName().equals("getEntityManager");
assert c.getOutAttributes().size()==0;
assert c.getRemoveMethods().size()==0;
c = new Component(ManagedHibernateSession.class, "pc");
assert c.getName().equals("pc");
assert c.getBeanClass()==ManagedHibernateSession.class;
assert c.getType()==ComponentType.JAVA_BEAN;
assert c.getScope()==ScopeType.CONVERSATION;
assert c.hasDestroyMethod();
assert c.hasCreateMethod();
assert c.getCreateMethod().getName().equals("create");
assert c.getDestroyMethod().getName().equals("destroy");
assert c.getInAttributes().size()==0;
assert c.getUnwrapMethod().getName().equals("getSession");
assert c.getOutAttributes().size()==0;
assert c.getRemoveMethods().size()==0;
}
}