package fr.gael.dhus.database.dao;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import java.util.Iterator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.testng.Assert;
import fr.gael.dhus.database.dao.interfaces.HibernateDao;
import fr.gael.dhus.database.object.restriction.AccessRestriction;
import fr.gael.dhus.database.object.restriction.LockedAccessRestriction;
import fr.gael.dhus.util.CheckIterator;
import fr.gael.dhus.util.TestContextLoader;
@ContextConfiguration (locations = "classpath:fr/gael/dhus/spring/context-test.xml", loader = TestContextLoader.class)
@DirtiesContext (classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class TestAccessRestrictionDao extends
TestAbstractHibernateDao<AccessRestriction, String>
{
@Autowired
private AccessRestrictionDao dao;
@Override
protected HibernateDao<AccessRestriction, String> getHibernateDao ()
{
return dao;
}
@Override
protected int howMany ()
{
return 4;
}
@Override
public void create ()
{
int expected = dao.count () + 1;
String blockingReason = "Test create AccessRestriction";
AccessRestriction ar = new LockedAccessRestriction ();
ar.setBlockingReason (blockingReason);
ar = dao.create (ar);
Assert.assertNotNull (ar);
LockedAccessRestriction lar = (LockedAccessRestriction) ar;
assertEquals (lar.getBlockingReason (), blockingReason);
assertEquals (dao.count (), expected);
}
@Override
public void read ()
{
String trueId = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0";
String fakeId = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5";
Assert.assertNotNull (dao.read (trueId));
Assert.assertNull (dao.read (fakeId));
}
@Override
public void update ()
{
String id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2";
String reason = "Test update reason";
AccessRestriction ar = dao.read (id);
Assert.assertNotEquals (ar.getBlockingReason (), reason);
ar.setBlockingReason (reason);
dao.update (ar);
ar = dao.read (id);
Assert.assertEquals (ar.getBlockingReason (), reason);
}
@Override
public void delete ()
{
String id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3";
int expected = dao.count () - 1;
AccessRestriction ar = dao.read (id);
assertNotNull (ar);
dao.delete (ar);
Assert.assertEquals (dao.count (), expected);
Assert.assertNull (dao.read (id));
}
@Override
public void scroll ()
{
String hql = "WHERE blockingReason LIKE 'punition%'";
Iterator<AccessRestriction> it = dao.scroll (hql, -1, -1).iterator ();
assertTrue (CheckIterator.checkElementNumber (it, 3));
}
@Override
public void first ()
{
String hql =
"FROM AccessRestriction ar WHERE ar.blockingReason LIKE "
+ "'punition%' ORDER BY id DESC";
AccessRestriction ar = dao.first (hql);
assertNotNull (ar);
assertEquals (ar.getUUID (), "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3");
}
}