package de.dhbw.humbuch.viewmodel; import java.util.Iterator; import java.util.List; import javax.persistence.EntityManager; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Provider; import de.dhbw.humbuch.model.DAO; import de.dhbw.humbuch.model.entity.TestPersistenceInitialiser; /** * @author David Herrmann (davherrmann) * * Base class for Tests using persistence and {@link DAO}s */ @Ignore("Base test") public class BaseTest { private final static Logger LOG = LoggerFactory.getLogger(BaseTest.class); private Provider<EntityManager> emProvider; /** * Inject necessary objects, called by child test class * * @param persistenceInitialiser - {@link TestPersistenceInitialiser} * @param emProvider - {@link Provider} */ public void setInjected(TestPersistenceInitialiser persistenceInitialiser, Provider<EntityManager> emProvider) { this.emProvider = emProvider; } /** * Log a warning if child class has not injected necessary objects */ @Before public void checkInjection() { if (emProvider == null) { LOG.error("setInjected() in BaseTest might not have been called"); } } /** * Clear all tables after running a test */ @After public void clearAllTables() { LOG.info("deleting data in all tables"); Session session = emProvider.get().unwrap(Session.class); Transaction transaction = session.beginTransaction(); List<?> all = session.createQuery("from java.lang.Object").list(); Iterator<?> it = all.iterator(); while (it.hasNext()) { session.delete(it.next()); } transaction.commit(); } }