package org.needle4j.testng; import javax.persistence.EntityManager; import org.needle4j.NeedleTestcase; import org.needle4j.injection.InjectionProvider; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; /** * @see NeedleTestcase */ public abstract class AbstractNeedleTestcase extends NeedleTestcase { private DatabaseTestcase databaseTestcase; /** * Creates an instance of {@link NeedleTestcase} with optional additional * injection provider. * * @param injectionProvider * optional additional injection provider * * @see InjectionProvider */ public AbstractNeedleTestcase(InjectionProvider<?>... injectionProvider) { super(injectionProvider); for (InjectionProvider<?> provider : injectionProvider) { if (provider instanceof DatabaseTestcase) { databaseTestcase = (DatabaseTestcase) provider; } } } @BeforeMethod public final void beforeNeedleTestcase() throws Exception { initTestcase(this); if (databaseTestcase != null) { databaseTestcase.before(); } } @AfterMethod public final void afterNeedleTestcase() throws Exception { if (databaseTestcase != null) { databaseTestcase.after(); } } /** * Returns the {@link EntityManager}, if the test is constructed with a * {@link DatabaseTestcase} instance or null otherwise. * * @return {@link EntityManager} or null */ protected EntityManager getEntityManager() { if (databaseTestcase != null) { return databaseTestcase.getEntityManager(); } return null; } }