package de.fhb.autobday.dao;
import de.fhb.autobday.data.AbdContact;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
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 AbdContactDAO
*
* @author Christoph Ott
*/
public class AbdContactDAOTest {
private static AbdContactFacade contactDAOunderTest;
private EntityManager emMock;
private AbdContact contactEntity;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
contactDAOunderTest = new AbdContactFacade();
}
@Before
public void setUp() throws Exception {
emMock = createMock(EntityManager.class);
contactDAOunderTest.setEntityManager(emMock);
contactEntity = new AbdContact("11", "maja@haus.com", new Date(100, 5, 10), "hashid");
}
@Test
public void testFindContactByBday() {
Date bday = new Date(100, 5, 10);
List<AbdContact> collectionExpected = new ArrayList<AbdContact>();
collectionExpected.add(contactEntity);
collectionExpected.add(new AbdContact("11"));
Query queryMock = createMock(Query.class);
expect(queryMock.setParameter("bday", bday)).andReturn(queryMock);
expect(queryMock.getResultList()).andReturn(collectionExpected);
expect(emMock.createNamedQuery("Contact.findByBday")).andReturn(queryMock);
replay(emMock);
replay(queryMock);
Collection<AbdContact> actual = contactDAOunderTest.findContactByBday(bday);
assertEquals(collectionExpected, actual);
verify(emMock);
verify(queryMock);
}
@Test
public void testContains() {
expect(emMock.contains(contactEntity)).andReturn(true);
replay(emMock);
assertEquals(true, contactDAOunderTest.contains(contactEntity));
verify(emMock);
}
@Test
public void testRefresh() {
emMock.refresh(contactEntity);
replay(emMock);
contactDAOunderTest.refresh(contactEntity);
verify(emMock);
}
@Test
public void testCreate() {
emMock.persist(contactEntity);
replay(emMock);
contactDAOunderTest.create(contactEntity);
verify(emMock);
}
@Test
public void testEdit() {
expect(emMock.merge(contactEntity)).andReturn(contactEntity);
replay(emMock);
contactDAOunderTest.edit(contactEntity);
verify(emMock);
}
@Test
public void testRemove() {
expect(emMock.merge(contactEntity)).andStubReturn(contactEntity);
emMock.remove(contactEntity);
replay(emMock);
contactDAOunderTest.remove(contactEntity);
verify(emMock);
}
@Test
public void testFind() {
expect(emMock.find(AbdContact.class, contactEntity.getId())).andReturn(contactEntity);
replay(emMock);
AbdContact aktual = contactDAOunderTest.find(contactEntity.getId());
assertEquals(contactEntity, aktual);
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<AbdContact> resultList = new ArrayList<AbdContact>();
resultList.add(contactEntity);
resultList.add(new AbdContact("22"));
expect(emMock.getCriteriaBuilder()).andReturn(criteriaBuilderMock);
expect(criteriaBuilderMock.createQuery()).andReturn(criteriaQueryMock);
expect(criteriaQueryMock.from(AbdContact.class)).andReturn(rootMock);
expect(criteriaQueryMock.select(rootMock)).andReturn(criteriaQueryMock);
expect(emMock.createQuery(criteriaQueryMock)).andReturn(typedQueryMock);
expect(typedQueryMock.getResultList()).andReturn(resultList);
assertEquals(resultList, contactDAOunderTest.findAll());
replay(emMock);
replay(criteriaBuilderMock);
replay(criteriaQueryMock);
replay(rootMock);
replay(typedQueryMock);
contactDAOunderTest.findAll();
verify(criteriaBuilderMock);
verify(criteriaQueryMock);
verify(rootMock);
verify(typedQueryMock);
verify(emMock);
}
@Test
@Ignore
public void testFindRange() {
}
@Test
@Ignore
public void testCount() {
}
}