package org.hibernate.ogm.hiking;
import java.io.File;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.transaction.api.annotation.Transactional;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.hibernate.ogm.hiking.model.Hike;
import org.hibernate.ogm.hiking.model.business.Customer;
import org.hibernate.ogm.hiking.model.business.Order;
import org.hibernate.ogm.hiking.repository.HikeRepository;
import org.hibernate.ogm.hiking.repository.business.OrderRepository;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@RunWith(Arquillian.class)
@Transactional
public class OrderRepositoryIT {
private static final String WEBAPP_SRC = "src/main/webapp/";
@Inject
private OrderRepository orderRepository;
@PersistenceContext(unitName="hike-PU-JTA")
private EntityManager entityManager;
@Deployment
public static Archive<?> createTestArchive() {
return ShrinkWrap
.create( WebArchive.class, OrderRepositoryIT.class.getSimpleName() + ".war" )
.addPackage( Hike.class.getPackage() )
.addPackage( Order.class.getPackage() )
.addPackage( HikeRepository.class.getPackage() )
.addPackage( OrderRepository.class.getPackage() )
.addAsResource( "META-INF/persistence.xml" )
.addAsWebInfResource( new File( WEBAPP_SRC + "WEB-INF/beans.xml" ) )
.addAsResource( new StringAsset(
"Dependencies: org.hibernate.ogm:main services, org.hibernate.ogm.mongodb:main services" ),
"META-INF/MANIFEST.MF"
);
}
@Test
public void shouldPersistOrder() {
Order order = new Order();
order.customer = new Customer();
order.customer.email = "jesuischarlie@hibernate.org";
order.customer.name = "Charlie";
order = orderRepository.createOrder(order);
assertNotNull( order.number );
assertNotNull( order.id );
assertEquals( "Charlie", order.customer.name );
//entityManager.flush();
order = orderRepository.getOrderByNumber( order.number );
assertNotNull( order );
assertNotNull( order.customer );
}
}