package fr.gael.dhus.database.dao; import java.util.Calendar; import java.util.Date; 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 org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import fr.gael.dhus.database.dao.interfaces.HibernateDao; import fr.gael.dhus.database.object.NetworkUsage; import fr.gael.dhus.database.object.User; import fr.gael.dhus.util.CheckIterator; import fr.gael.dhus.util.TestContextLoader; /* * used from spring-test v 3.2.2 (current version on DHuS 3.2.1) * @WebAppConfiguration * @ContextHierarchy( * @ContextConfiguration(locations = "classpath:spring/context-test.xml")) */ @ContextConfiguration (locations = "classpath:fr/gael/dhus/spring/context-test.xml", loader = TestContextLoader.class) @DirtiesContext (classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class TestNetworkUsageDao extends TestAbstractHibernateDao<NetworkUsage, Long> { @Autowired private NetworkUsageDao dao; @Autowired private UserDao udao; private Date period; @BeforeClass public void setUp () { Calendar calendar = Calendar.getInstance (); calendar.set (2014, 01, 01); this.period = calendar.getTime (); } @Override protected HibernateDao<NetworkUsage, Long> getHibernateDao () { return dao; } @Override protected int howMany () { return 8; } @Override public void create () { User user = new User (); user.setUUID ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3"); user.setUsername ("babar"); NetworkUsage nu = new NetworkUsage (); nu.setDate (new Date ()); nu.setIsDownload (false); nu.setSize (42L); nu.setUser (user); nu = dao.create (nu); Assert.assertNotNull (nu); Assert.assertNotNull (nu.getId ()); Assert.assertEquals (nu.getSize ().intValue (), 42); Assert.assertEquals (nu.getUser (), user); } @Override public void read () { User u = new User (); u.setUUID ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2"); NetworkUsage nu = dao.read (0L); Assert.assertNotNull (nu); Assert.assertEquals (nu.getSize ().intValue (), 2); Assert.assertEquals (nu.getUser ().getUsername (), "toto"); } @Override public void update () { Long id = 4L; NetworkUsage nu = dao.read (id); boolean bool = true; Assert.assertNotNull (nu); Assert.assertNotEquals (nu.getIsDownload (), bool); nu.setIsDownload (bool); dao.update (nu); nu = dao.read (id); Assert.assertTrue (nu.getIsDownload ()); } @Override public void delete () { long id = 5; dao.delete (dao.read (id)); Assert.assertEquals (dao.count (), (howMany () - 1)); Assert.assertNull (dao.read (id)); Assert.assertNotNull (udao.read ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3")); } @Override public void scroll () { String hql = "WHERE isDownload IS FALSE"; Iterator<NetworkUsage> it = dao.scroll (hql, -1, -1).iterator (); Assert.assertTrue (CheckIterator.checkElementNumber (it, 3)); } @Override public void first () { String hql = "FROM NetworkUsage WHERE isDownload = TRUE ORDER BY id DESC"; NetworkUsage nu = dao.first (hql); Assert.assertNotNull (nu); Assert.assertEquals (nu.getId ().intValue (), 7); } @Test public void testGetDownloadedCountPerUser () { User u = udao.getByName ("babar"); int n = dao.countDownloadByUserSince (u, period); Assert.assertEquals (n, 2); } @Test public void testGetDownloadSizePerUser () { User u = udao.getByName ("babar"); long expected = 68; long size = dao.getDownloadedSizeByUserSince (u, period); Assert.assertEquals (size, expected); } }