/** * */ package net.frontlinesms.data.repository.hibernate; import net.frontlinesms.junit.HibernateTestCase; import net.frontlinesms.data.DuplicateKeyException; import net.frontlinesms.data.Order; import net.frontlinesms.data.domain.Email; import net.frontlinesms.data.domain.EmailAccount; import net.frontlinesms.data.repository.EmailAccountDao; import net.frontlinesms.data.repository.EmailDao; import net.frontlinesms.email.EmailUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Required; /** * Test class for {@link HibernateEmailDao} * @author Alex */ public class HibernateEmailDaoTest extends HibernateTestCase { //> PROPERTIES /** Logging object */ private final Log log = LogFactory.getLog(getClass()); /** Instance of this DAO implementation we are testing. */ private EmailDao emailDao; /** Dao for email accounts */ private EmailAccountDao emailAccountDao; //> TEST METHODS public void test() throws DuplicateKeyException { EmailAccount emailAccount = new EmailAccount("test@frontlinesms.net", "frontlinesms.net", 123, "secretpassword", false, false, EmailUtils.SMTP); emailAccountDao.saveEmailAccount(emailAccount); assertEquals(0, emailDao.getAllEmails().size()); assertEquals(emailDao.getAllEmails().size(), emailDao.getEmailCount()); assertEquals(emailDao.getAllEmails(), emailDao.getEmailsWithLimitWithoutSorting(0, Integer.MAX_VALUE)); assertEquals(emailDao.getAllEmails(), emailDao.getEmailsWithLimit(Email.Field.EMAIL_CONTENT, Order.ASCENDING, 0, Integer.MAX_VALUE)); Email email = new Email(emailAccount, "all@myfriends.com", "About the weekend", "Hey guys,\nJust a quick note about the weekend. I can't wait.\rLove from Mr. Test"); emailDao.saveEmail(email); assertEquals(1, emailDao.getAllEmails().size()); assertEquals(emailDao.getAllEmails().size(), emailDao.getEmailCount()); assertEquals(emailDao.getAllEmails(), emailDao.getEmailsWithLimitWithoutSorting(0, Integer.MAX_VALUE)); assertEquals(emailDao.getAllEmails(), emailDao.getEmailsWithLimit(Email.Field.FROM, Order.ASCENDING, 0, Integer.MAX_VALUE)); emailDao.deleteEmail(email); assertEquals(0, emailDao.getAllEmails().size()); assertEquals(emailDao.getAllEmails().size(), emailDao.getEmailCount()); assertEquals(emailDao.getAllEmails(), emailDao.getEmailsWithLimitWithoutSorting(0, Integer.MAX_VALUE)); assertEquals(emailDao.getAllEmails(), emailDao.getEmailsWithLimit(Email.Field.STATUS, Order.ASCENDING, 0, Integer.MAX_VALUE)); } //> TEST SETUP/TEARDOWN //> ACCESSORS /** @param d The DAO to use for the test. */ @Required public void setEmailDao(EmailDao d) { // we can just set the DAO once in the test this.emailDao = d; } /** @param d The {@link EmailAccountDao} to use */ @Required public void setEmailAccountDao(EmailAccountDao d) { this.emailAccountDao = d; } }