package de.randi2.core.integration.dao;
import static de.randi2.testUtility.utility.RANDI2Assert.assertNotSaved;
import static de.randi2.testUtility.utility.RANDI2Assert.assertSaved;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import de.randi2.dao.LoginDao;
import de.randi2.model.Login;
import de.randi2.testUtility.utility.DomainObjectFactory;
import de.randi2.testUtility.utility.TestStringUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/META-INF/spring-test.xml" })
@Transactional
public class LoginDaoTest extends AbstractDaoTest{
@Autowired
private LoginDao loginDao;
@Autowired
private DomainObjectFactory factory;
@Autowired
private TestStringUtil testStringUtil;
@Test
public void createAndSaveTest() {
Login l = factory.getLogin();
l.setUsername(testStringUtil.getWithLength(Login.MIN_USERNAME_LENGTH) + "@xyz.com");
assertNotSaved(l);
loginDao.create(l);
assertSaved(l);
assertNotNull(loginDao.get(l.getId()));
}
@Test
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void getUsernameTest() {
Login l = initUsernameTest();
entityManager.clear();
Login l2 = loginDao.get(l.getUsername());
assertEquals(l.getId(), l2.getId());
assertEquals(l.getUsername(), l2.getUsername());
}
@Transactional(propagation=Propagation.REQUIRES_NEW)
private Login initUsernameTest(){
Login l = factory.getLogin();
l.setUsername(testStringUtil.getWithLength(Login.MIN_USERNAME_LENGTH) + "@xyz.com");
loginDao.create(l);
return l;
}
}