package fr.gael.dhus.database.dao;
import static org.testng.Assert.assertEquals;
import java.io.Serializable;
import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests;
import org.testng.annotations.Test;
import fr.gael.dhus.database.dao.interfaces.DaoListener;
import fr.gael.dhus.database.dao.interfaces.HibernateDao;
public abstract class TestAbstractHibernateDao<T, PK extends Serializable>
extends AbstractTransactionalTestNGSpringContextTests
{
protected abstract HibernateDao<T, PK> getHibernateDao ();
protected abstract int howMany ();
@Test
public abstract void create ();
@Test
public abstract void read ();
@Test
public abstract void update ();
@Test
public abstract void delete ();
@Test
public abstract void scroll ();
@Test
public abstract void first ();
@Test
public void count ()
{
assertEquals (getHibernateDao ().count (), howMany ());
}
@Test
public void readAll ()
{
assertEquals (getHibernateDao ().readAll ().size (), howMany ());
}
@Test
public void deleteAll ()
{
cancelListeners (getHibernateDao ());
getHibernateDao ().deleteAll ();
assertEquals (getHibernateDao ().count (), 0);
}
protected void cancelListeners (HibernateDao<T, PK>dao)
{
for (DaoListener<T> listener: getHibernateDao ().getListeners ())
getHibernateDao ().removeListener ((DaoListener<T>)listener);
}
}