package org.jboss.seam.test.integration; import javax.persistence.EntityManager; import org.hibernate.Session; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.OverProtocol; import org.jboss.arquillian.junit.Arquillian; import org.jboss.seam.framework.EntityIdentifier; import org.jboss.seam.framework.HibernateEntityIdentifier; import org.jboss.seam.mock.JUnitSeamTest; import org.jboss.shrinkwrap.api.Archive; import org.junit.Test; import org.junit.runner.RunWith; /** * @author Pete Muir * */ @RunWith(Arquillian.class) public class IdentifierTest extends JUnitSeamTest { @Deployment(name="IdentifierTest") @OverProtocol("Servlet 3.0") public static Archive<?> createDeployment() { return Deployments.defaultSeamDeployment() .addClasses(Country.class, CountryHome.class); } @Test public void testEntityIdentifier() throws Exception { new ComponentTest() { @Override protected void testComponents() throws Exception { setValue("#{countryHome.instance.name}", "foo"); invokeMethod("#{countryHome.persist}"); Country country = (Country) getValue("#{countryHome.instance}"); EntityManager entityManager = (EntityManager) getValue("#{countryHome.entityManager}"); EntityIdentifier entityIdentifier = new EntityIdentifier(country, entityManager); assert "foo".equals(((Country) entityIdentifier.find(entityManager)).getName()); EntityIdentifier entityIdentifier2 = new EntityIdentifier(country, entityManager); assert entityIdentifier.equals(entityIdentifier2); } }.run(); } @Test public void testHibernateEntityIdentifier() throws Exception { new ComponentTest() { @Override protected void testComponents() throws Exception { setValue("#{countryHome.instance.name}", "foo"); invokeMethod("#{countryHome.persist}"); Country country = (Country) getValue("#{countryHome.instance}"); Session session = (Session) getValue("#{countryHome.entityManager.delegate}"); HibernateEntityIdentifier hibernateEntityIdentifier = new HibernateEntityIdentifier(country, session); assert "foo".equals(((Country) hibernateEntityIdentifier.find(session)).getName()); HibernateEntityIdentifier hibernateEntityIdentifier2 = new HibernateEntityIdentifier(country, session); assert hibernateEntityIdentifier.equals(hibernateEntityIdentifier2); } }.run(); } }