package de.fhb.autobday.manager.contact;
import com.stvconsultants.easygloss.javaee.JavaEEGloss;
import de.fhb.autobday.dao.AbdContactFacade;
import de.fhb.autobday.dao.AbdGroupFacade;
import de.fhb.autobday.dao.AbdGroupToContactFacade;
import de.fhb.autobday.data.AbdContact;
import de.fhb.autobday.data.AbdGroup;
import de.fhb.autobday.data.AbdGroupToContact;
import java.util.ArrayList;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Integrationtest
*
* @author Andy Klay <klay@fh-brandenburg.de>, Christoph Ott
*/
public class ContactManagerTestIntegration {
private static JavaEEGloss gloss;
private static ContactManager managerUnderTest;
private static AbdGroupToContactFacade groupContactFacade;
private static AbdContactFacade contactDAO;
private static AbdGroupFacade groupDAO;
private EntityManager emMock;
private AbdContact contactOne;
private AbdContact contactTwo;
private AbdGroupToContact groupToContactOne;
private AbdGroupToContact groupToContactTwo;
private ArrayList<AbdGroupToContact> allGroupToContact;
private AbdGroup groupOne;
private AbdGroup groupTwo;
@BeforeClass
public static void setUpClass() {
groupContactFacade = new AbdGroupToContactFacade();
contactDAO = new AbdContactFacade();
groupDAO = new AbdGroupFacade();
}
@Before
public void setUp() {
gloss = new JavaEEGloss();
//create Mocks
emMock = createMock(EntityManager.class);
//set EntityManagers
groupContactFacade.setEntityManager(emMock);
contactDAO.setEntityManager(emMock);
groupDAO.setEntityManager(emMock);
//set Objekts to inject
gloss.addEJB(groupContactFacade);
gloss.addEJB(contactDAO);
gloss.addEJB(groupDAO);
//create Manager with Mocks
managerUnderTest = gloss.make(ContactManager.class);
//create Objects needed for tests
contactOne = new AbdContact("mustermann");
contactTwo = new AbdContact("otto");
groupOne = new AbdGroup("friends");
groupTwo = new AbdGroup("family");
groupToContactOne = new AbdGroupToContact();
groupToContactTwo = new AbdGroupToContact();
allGroupToContact = new ArrayList<AbdGroupToContact>();
groupToContactOne.setAbdContact(contactOne);
groupToContactOne.setAbdGroup(groupOne);
allGroupToContact.add(groupToContactOne);
groupToContactTwo.setAbdContact(contactTwo);
groupToContactOne.setAbdGroup(groupTwo);
allGroupToContact.add(groupToContactTwo);
}
/**
* test setActive of ContactManage
*/
@Test
public void testSetActive() throws Exception {
System.out.println("testsetActive");
Query queryMock = createMock(Query.class);
//prepare test variables
boolean isActive = true;
contactOne.setAbdGroupToContactCollection(allGroupToContact);
// Setting up the expected value of the method call of Mockobject
expect(emMock.find(AbdContact.class, contactOne.getId())).andReturn(contactOne);
expect(emMock.find(AbdGroup.class, groupOne.getId())).andReturn(groupOne);
expect(emMock.merge(groupToContactOne)).andReturn(groupToContactOne);
// Setup is finished need to activate the mock
replay(emMock);
replay(queryMock);
//call method to test
managerUnderTest.setActive(contactOne, groupOne, isActive);
//verify
verify(emMock);
verify(queryMock);
}
/**
* test getContact of ContactManager
*/
@Test
public void testGetContact() throws Exception {
System.out.println("testgetContact");
// Setting up the expected value of the method call of Mockobject
expect(emMock.find(AbdContact.class, contactOne.getId())).andReturn(contactOne);
// Setup is finished need to activate the mock
replay(emMock);
assertEquals(managerUnderTest.getContact(contactOne.getId()), contactOne);
//verify
verify(emMock);
}
}