package br.com.caelum.calopsita.persistence.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.jmock.Mockery;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import br.com.caelum.calopsita.infra.interceptor.RepositoryInterceptor;
import br.com.caelum.iogi.Instantiator;
public abstract class AbstractDaoTest {
private static SessionFactory sessionFactory;
protected Session session;
private Transaction transaction;
protected Mockery mockery;
private Instantiator<Object> instantiator;
@BeforeClass
public static void prepare() {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
@AfterClass
public static void destroy() {
sessionFactory.close();
}
@Before
public void setUp() throws Exception {
mockery = new Mockery();
instantiator = mockery.mock(Instantiator.class);
session = sessionFactory.openSession(new RepositoryInterceptor(instantiator));
transaction = session.beginTransaction();
}
@After
public void tearDown() throws Exception {
if (transaction != null) {
transaction.rollback();
}
session.close();
}
}