package de.fhb.autobday.dao;
import de.fhb.autobday.data.AbdUser;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
/**
* Test of AbdUserDAO
*
* @author Christoph Ott
*/
public class AbdUserDAOTest {
private static AbdUserFacade userDAOunderTest;
private EntityManager emMock;
private AbdUser userEntity;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
userDAOunderTest = new AbdUserFacade();
}
@Before
public void setUp() throws Exception {
emMock = createMock(EntityManager.class);
userDAOunderTest.setEntityManager(emMock);
userEntity = new AbdUser(11, "maja", "1234", "salt", "maja", "biene");
}
@Test
public void testFindUserByUsername() {
Query queryMock = createMock(Query.class);
expect(queryMock.setParameter("username", userEntity.getUsername())).andReturn(queryMock);
expect(queryMock.getSingleResult()).andReturn(userEntity);
expect(emMock.createNamedQuery("AbdUser.findByUsername")).andReturn(queryMock);
replay(emMock);
replay(queryMock);
AbdUser actual = userDAOunderTest.findUserByUsername(userEntity.getUsername());
assertEquals(userEntity, actual);
verify(emMock);
verify(queryMock);
}
@Test(expected = NoResultException.class)
@Ignore
public void testFindUserByUsernameShouldThrowNoResultException() throws Exception {
Query queryMock = createMock(Query.class);
expect(queryMock.setParameter("username", userEntity.getUsername())).andReturn(queryMock);
expect(queryMock.getSingleResult()).andReturn(null);
expect(emMock.createNamedQuery("AbdUser.findByUsername")).andReturn(queryMock);
replay(emMock);
replay(queryMock);
AbdUser actual = userDAOunderTest.findUserByUsername(userEntity.getUsername());
verify(emMock);
verify(queryMock);
}
@Test
public void testContains() {
expect(emMock.contains(userEntity)).andReturn(true);
replay(emMock);
assertEquals(true, userDAOunderTest.contains(userEntity));
verify(emMock);
}
@Test
public void testRefresh() {
emMock.refresh(userEntity);
replay(emMock);
userDAOunderTest.refresh(userEntity);
verify(emMock);
}
@Test
public void testCreate() {
emMock.persist(userEntity);
replay(emMock);
userDAOunderTest.create(userEntity);
verify(emMock);
}
@Test
public void testEdit() {
expect(emMock.merge(userEntity)).andReturn(userEntity);
replay(emMock);
userDAOunderTest.edit(userEntity);
verify(emMock);
}
@Test
public void testRemove() {
expect(emMock.merge(userEntity)).andStubReturn(userEntity);
emMock.remove(userEntity);
replay(emMock);
userDAOunderTest.remove(userEntity);
verify(emMock);
}
@Test
public void testFind() {
expect(emMock.find(AbdUser.class, userEntity.getId())).andReturn(userEntity);
replay(emMock);
assertEquals(userEntity, userDAOunderTest.find(userEntity.getId()));
verify(emMock);
}
@Test
@Ignore
public void testFindAll() {
CriteriaQuery criteriaQueryMock = createMock(CriteriaQuery.class);
CriteriaBuilder criteriaBuilderMock = createMock(CriteriaBuilder.class);
Root rootMock = createMock(Root.class);
TypedQuery typedQueryMock = createMock(TypedQuery.class);
List<AbdUser> resultList = new ArrayList<AbdUser>();
resultList.add(userEntity);
resultList.add(new AbdUser(22));
expect(emMock.getCriteriaBuilder()).andReturn(criteriaBuilderMock);
expect(criteriaBuilderMock.createQuery()).andReturn(criteriaQueryMock);
expect(criteriaQueryMock.from(AbdUser.class)).andReturn(rootMock);
expect(criteriaQueryMock.select(rootMock)).andReturn(criteriaQueryMock);
expect(emMock.createQuery(criteriaQueryMock)).andReturn(typedQueryMock);
expect(typedQueryMock.getResultList()).andReturn(resultList);
assertEquals(resultList, userDAOunderTest.findAll());
replay(emMock);
replay(criteriaBuilderMock);
replay(criteriaQueryMock);
replay(rootMock);
replay(typedQueryMock);
userDAOunderTest.findAll();
verify(criteriaBuilderMock);
verify(criteriaQueryMock);
verify(rootMock);
verify(typedQueryMock);
verify(emMock);
}
@Test
@Ignore
public void testFindRange() {
}
@Test
@Ignore
public void testCount() {
}
}