/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package qa.qcri.aidr.dbmanager.ejb.remote.facade.imp; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.Persistence; import org.apache.log4j.Logger; import org.dom4j.util.UserDataAttribute; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import qa.qcri.aidr.common.exception.PropertyNotSetException; import qa.qcri.aidr.dbmanager.dto.CollectionDTO; import qa.qcri.aidr.dbmanager.dto.CrisisTypeDTO; import qa.qcri.aidr.dbmanager.dto.ModelFamilyDTO; import qa.qcri.aidr.dbmanager.dto.NominalAttributeDTO; import qa.qcri.aidr.dbmanager.dto.UsersDTO; public class TestCrisisResourceFacadeImp { private static CollectionResourceFacadeImp crisisResourceFacadeImp; private static UsersResourceFacadeImp userResourceFacadeImp; private static CrisisTypeResourceFacadeImp crisisTypeResourceFacadeImp; private static NominalAttributeResourceFacadeImp nominalAttributeResourceFacadeImp; private static ModelFamilyResourceFacadeImp modelFamilyResourceFacadeImp; private static EntityManager entityManager; private static CollectionDTO editCrisis; private static Long crisisId; private static CollectionDTO crisisDTO; private static String crisisCode = "testCrisisCode"+new Date(); private static String crisisName = "testCrisisName"+new Date(); private static UsersDTO user; private static Logger logger = Logger.getLogger("db-manager-log"); @BeforeClass public static void setUpClass() { crisisResourceFacadeImp = new CollectionResourceFacadeImp(); entityManager = Persistence.createEntityManagerFactory( "ProjectDBManagerTest-ejbPU").createEntityManager(); crisisResourceFacadeImp.setEntityManager(entityManager); crisisTypeResourceFacadeImp = new CrisisTypeResourceFacadeImp(); userResourceFacadeImp = new UsersResourceFacadeImp(); nominalAttributeResourceFacadeImp = new NominalAttributeResourceFacadeImp(); modelFamilyResourceFacadeImp = new ModelFamilyResourceFacadeImp(); modelFamilyResourceFacadeImp.setEntityManager(entityManager); nominalAttributeResourceFacadeImp.setEntityManager(entityManager); crisisTypeResourceFacadeImp.setEntityManager(entityManager); userResourceFacadeImp.setEntityManager(entityManager); } @Before public void setUp() { CrisisTypeDTO crisisTypeDTO = crisisTypeResourceFacadeImp.findCrisisTypeByID(1100L); user = new UsersDTO("userDBTest"+new Date(), "normal"); entityManager.getTransaction().begin(); user = userResourceFacadeImp.addUser(user); entityManager.getTransaction().commit(); crisisDTO = new CollectionDTO(crisisName, crisisCode, false, false, crisisTypeDTO, user, user); entityManager.getTransaction().begin(); crisisDTO = crisisResourceFacadeImp.addCrisis(crisisDTO); entityManager.getTransaction().commit(); crisisId = crisisDTO.getCrisisID(); } @After public void tearDown() { try { if (crisisDTO != null) { entityManager.getTransaction().begin(); crisisResourceFacadeImp.deleteCrisis(crisisDTO); entityManager.getTransaction().commit(); CollectionDTO result = crisisResourceFacadeImp.getCrisisByCode(crisisCode); assertNull(result); } } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while deleting crisis "+ex.getMessage()); } try { if (user != null) { entityManager.getTransaction().begin(); user = userResourceFacadeImp.getUserByName(user.getName()); userResourceFacadeImp.deleteUser(user.getUserID()); entityManager.getTransaction().commit(); UsersDTO result = userResourceFacadeImp.getUserByName(user.getName()); assertNull(result); } } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while deleting user "+ex.getMessage()); } } @AfterClass public static void shutDown() throws Exception { if (crisisDTO != null) crisisResourceFacadeImp.deleteCrisis(crisisDTO); if (editCrisis != null) crisisResourceFacadeImp.deleteCrisis(editCrisis); crisisResourceFacadeImp.getEntityManager().close(); } /** * Test of addCrisis method, of class CrisisResourceFacadeImp. */ @Test public void testAddCrisis() { assertEquals(crisisName, crisisDTO.getName()); } @Test public void testFindCrisisByID() { try { CollectionDTO crisisDTO = crisisResourceFacadeImp .findCrisisByID(crisisId); assertEquals(crisisName, crisisDTO.getName()); } catch (PropertyNotSetException ex) { logger.error("Property not set exception while finding crisis by id "+ex.getMessage()); } } /** * Test of findByCriteria method, of class CrisisResourceFacadeImp. */ @Test public void testFindByCriteria() { try { String columnName = "code"; String value = crisisCode; List<CollectionDTO> result = crisisResourceFacadeImp.findByCriteria( columnName, value); assertEquals(crisisCode, result.get(0).getCode()); } catch (PropertyNotSetException ex) { logger.error("Property not set exception while finding crisis by criteria "+ex.getMessage()); } } @Test public void testGetCrisisWithAllFieldsByID() { try { CollectionDTO crisis = crisisResourceFacadeImp .getCrisisWithAllFieldsByID(crisisId); assertEquals(crisisName, crisis.getName()); } catch (PropertyNotSetException ex) { logger.error("Property not set exception while getting crisis with all fields by id "+ex.getMessage()); } } /** * Test of getCrisisByCode method, of class CrisisResourceFacadeImp. */ @Test public void testGetCrisisByCode() { try { CollectionDTO result = crisisResourceFacadeImp .getCrisisByCode(crisisCode); assertNotNull(result); assertEquals(crisisCode, result.getCode()); } catch (PropertyNotSetException ex) { logger.error("Property not set exception while getting crisis by code "+ex.getMessage()); } } /** * Test of editCrisis method, of class CrisisResourceFacadeImp. */ @Test public void testEditCrisis() { try { editCrisis = crisisResourceFacadeImp.findCrisisByID(crisisId); editCrisis.setName(crisisName + "2"); editCrisis.setCode(crisisCode + "2"); entityManager.getTransaction().begin(); CollectionDTO result = crisisResourceFacadeImp.editCrisis(editCrisis); entityManager.getTransaction().commit(); assertEquals(crisisName + "2", result.getName()); assertEquals(crisisCode + "2", result.getCode()); // Modified to previous state editCrisis = crisisResourceFacadeImp.findCrisisByID(crisisId); editCrisis.setName(crisisName); editCrisis.setCode(crisisCode); entityManager.getTransaction().begin(); result = crisisResourceFacadeImp.editCrisis(editCrisis); entityManager.getTransaction().commit(); editCrisis = null; } catch (PropertyNotSetException ex) { logger.error("Property not set exception while editting crisis "+ex.getMessage()); } } @Test public void testFindActiveCrisis() { try { List<CollectionDTO> list = crisisResourceFacadeImp.findActiveCrisis(); assertEquals(false, list.get(0).isIsTrashed()); } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while finding all active crisis "+ex.getMessage()); } } /** * Test of getAllCrisis method, of class CrisisResourceFacadeImp. */ @Test public void testGetAllCrisis() { try { List<CollectionDTO> result = crisisResourceFacadeImp.getAllCrisis(); assertNotNull(result); } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while getting all crisis "+ex.getMessage()); } } /** * Test of getAllCrisisWithModelFamilies method, of class * CrisisResourceFacadeImp. */ @Test public void testGetAllCrisisWithModelFamilies() { try { List<CollectionDTO> result = crisisResourceFacadeImp .getAllCrisisWithModelFamilies(); assertNotNull(result.get(0).getModelFamiliesDTO()); } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while getting all crisis with model families "+ex.getMessage()); } } @Test public void testGetAllCrisisWithModelFamilyNominalAttribute() { try { List<CollectionDTO> list = crisisResourceFacadeImp .getAllCrisisWithModelFamilyNominalAttribute(); assertNotNull(list.get(0).getModelFamiliesDTO()); assertNotNull(list.get(0).getNominalAttributesDTO()); } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while getting all crisis with model family nominal attribute "+ex.getMessage()); } } /** * Test of getAllCrisisByUserID method, of class CrisisResourceFacadeImp. */ /* * @Test public void testGetAllCrisisByUserID() { * try { List<CrisisDTO> result * = crisisResourceFacadeImp.getAllCrisisByUserID(userId); * assertEquals(Long.valueOf(userId), * result.get(0).getUsersDTO().getUserID()); } catch * (PropertyNotSetException ex) { * Logger.getLogger(CrisisResourceFacadeImpTest * .class.getName()).log(Level.SEVERE, * "PropertyNotSetException while getting all crisis by userID", ex); } } */ /** * Test of isCrisisExists method, of class CrisisResourceFacadeImp. */ @Test public void testIsCrisisExists() { try { boolean result = crisisResourceFacadeImp.isCrisisExists(crisisCode); assertEquals(true, result); } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while checking whether crisis exist or not by crisisCode "+ex.getMessage()); } } /** * Test of countClassifiersByCrisisCodes method, of class * CrisisResourceFacadeImp. */ @Test public void testCountClassifiersByCrisisCodes() { try{ List<String> codes = new ArrayList<String>(); codes.add(crisisCode); codes.add("cycloneIT-nov13"); codes.add("2014-01-australia_heat_wave"); NominalAttributeDTO nominalAttributeDTO1 = nominalAttributeResourceFacadeImp.getAttributeByID(1L); NominalAttributeDTO nominalAttributeDTO2 = nominalAttributeResourceFacadeImp.getAttributeByID(2L); ModelFamilyDTO modelFamilyDTO1 = new ModelFamilyDTO(); modelFamilyDTO1.setCrisisDTO(crisisDTO); modelFamilyDTO1.setIsActive(true); modelFamilyDTO1.setNominalAttributeDTO(nominalAttributeDTO1); ModelFamilyDTO modelFamilyDTO2 = new ModelFamilyDTO(); modelFamilyDTO2.setCrisisDTO(crisisDTO); modelFamilyDTO2.setIsActive(false); modelFamilyDTO2.setNominalAttributeDTO(nominalAttributeDTO2); // inserting model families entityManager.getTransaction().begin(); modelFamilyResourceFacadeImp.addCrisisAttribute(modelFamilyDTO1); modelFamilyResourceFacadeImp.addCrisisAttribute(modelFamilyDTO2); entityManager.getTransaction().commit(); //count classifiers by crisis HashMap<String, Integer> result = crisisResourceFacadeImp .countClassifiersByCrisisCodes(codes); assertEquals(true, result.containsKey(crisisCode)); assertTrue(result.get(crisisCode)>=Integer.valueOf(2)); // deleting model families List<ModelFamilyDTO> modelFamilyDTOs = modelFamilyResourceFacadeImp.getAllModelFamiliesByCrisis(crisisDTO.getCrisisID()); entityManager.getTransaction().begin(); for (ModelFamilyDTO modelFamilyDTO : modelFamilyDTOs) { modelFamilyResourceFacadeImp.deleteModelFamily(modelFamilyDTO.getModelFamilyId()); } entityManager.getTransaction().commit(); } catch (PropertyNotSetException ex) { logger.error("Property not set exception while accessing/inserting data "+ex.getMessage()); } } @Test public void testGetWithModelFamilyNominalAttributeByCrisisID() { try { CollectionDTO crisis = crisisResourceFacadeImp .getWithModelFamilyNominalAttributeByCrisisID(crisisId); assertEquals(Long.valueOf(crisisId), crisis.getCrisisID()); assertEquals(crisisName, crisis.getName()); } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while getting crisis with model family nominal attribute by crisisId "+ex.getMessage()); } } @Test public void testDeleteCrisis() { try { entityManager.getTransaction().begin(); int deleteCount = crisisResourceFacadeImp.deleteCrisis(crisisDTO); entityManager.getTransaction().commit(); assertEquals(1, deleteCount); crisisDTO = null; } catch (PropertyNotSetException ex) { logger.error("PropertyNotSetException while deleting crisis "+ex.getMessage()); } } }