/*
* 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.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import org.apache.log4j.Logger;
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.DocumentDTO;
import qa.qcri.aidr.dbmanager.dto.UsersDTO;
/**
*
* @author nalemadi
*/
public class TestDocumentResourceFacadeImp {
//
static DocumentResourceFacadeImp documentResourceFacadeImp;
static CollectionResourceFacadeImp crisisResourceFacadeImp;
static EntityManager entityManager;
static DocumentDTO documentDTO;
static UsersDTO user;
static CollectionDTO crisis;
static CrisisTypeResourceFacadeImp crisisTypeResourceFacadeImp;
static UsersResourceFacadeImp userResourceFacadeImp;
private static Logger logger = Logger.getLogger("db-manager-log");
@BeforeClass
public static void setUpClass() throws PropertyNotSetException {
documentResourceFacadeImp = new DocumentResourceFacadeImp();
crisisResourceFacadeImp = new CollectionResourceFacadeImp();
crisisTypeResourceFacadeImp = new CrisisTypeResourceFacadeImp();
userResourceFacadeImp = new UsersResourceFacadeImp();
entityManager = Persistence.createEntityManagerFactory(
"ProjectDBManagerTest-ejbPU").createEntityManager();
documentResourceFacadeImp.setEntityManager(entityManager);
crisisResourceFacadeImp.setEntityManager(entityManager);
crisisTypeResourceFacadeImp.setEntityManager(entityManager);
userResourceFacadeImp.setEntityManager(entityManager);
CrisisTypeDTO crisisTypeDTO = crisisTypeResourceFacadeImp.findCrisisTypeByID(1100L);
user = new UsersDTO("userDBTest"+new Date(), "normal");
entityManager.getTransaction().begin();
user = userResourceFacadeImp.addUser(user);
entityManager.getTransaction().commit();
CollectionDTO crisisDTO = new CollectionDTO("testCrisisName"+new Date(), "testCrisisCode"+new Date(), false, false, crisisTypeDTO, user, user);
entityManager.getTransaction().begin();
crisis = crisisResourceFacadeImp.addCrisis(crisisDTO);
entityManager.getTransaction().commit();
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
documentDTO = getDoc();
}
@AfterClass
public static void shutDown() throws Exception {
if (crisis != null) {
entityManager.getTransaction().begin();
crisisResourceFacadeImp.deleteCrisis(crisis);
entityManager.getTransaction().commit();
CollectionDTO result = crisisResourceFacadeImp.getCrisisByCode(crisis.getCode());
assertNull(result);
}
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);
}
documentResourceFacadeImp.getEntityManager().close();
}
@After
public void tearDown() {
if (documentDTO != null) {
entityManager.getTransaction().begin();
documentResourceFacadeImp.deleteDocument(documentDTO);
entityManager.getTransaction().commit();
}
}
private DocumentDTO getDoc() {
documentDTO = new DocumentDTO();
String tweet = "\"filter_level\":\"medium\",\"retweeted\":false,\"in_reply_to_screen_name\":null,\"possibly_sensitive\":false,\"truncated\":false,\"lang\":\"en\",\"in_reply_to_status_id_str\":null,"
+ "\"id\":445125937915387905,\"in_reply_to_user_id_str\":null,\"in_reply_to_status_id\":null,\"created_at\":\"Sun Mar 16 09:14:28 +0000 2014\",\"favorite_count\":0,\"place\":null,\"coordinates\":null,"
+ "\"text\":\"'Those in the #cockpit' behind #missing #flight? http://t.co/OYHvM1t0CT\",\"contributors\":null,\"geo\":null,\"entities\":{\"hashtags\":[{\"text\":\"cockpit\",\"indices\":[14,22]},{\"text\":\"missing\","
+ "\"indices\":[31,39]},{\"text\":\"flight\",\"indices\":[40,47]}],\"symbols\":[],\"urls\":[{\"expanded_url\":\"http://www.cnn.com/2014/03/15/world/asia/malaysia-airlines-plane/index.html\""
+ ",\"indices\":[49,71],\"display_url\":\"cnn.com/2014/03/15/wor\u2026\",\"url\":\"http://t.co/OYHvM1t0CT\"}],\"user_mentions\":[]},\"aidr\":{\"crisis_code\":\"2014-03-mh370\""
+ ",\"doctype\":\"twitter\",\"crisis_name\":\"Malaysia Airlines flight #MH370\"},\"source\":\"\",\"favorited\":false,"
+ "\"retweet_count\":0,\"in_reply_to_user_id\":null,\"id_str\":\"445125937915387905\",\"user\":{\"location\":\"Mexico, Distrito Federal. \",\"default_profile\":true,\"statuses_count\":1033,"
+ "\"profile_background_tile\":false,\"lang\":\"en\",\"profile_link_color\":\"0084B4\",\"profile_banner_url\":\"https://pbs.twimg.com/profile_banners/135306436/1394809176\",\"id\":135306436,\"following\":null,"
+ "\"favourites_count\":6,\"protected\":false,\"profile_text_color\":\"333333\",\"description\":\"Licenciado en derecho, he ocupado cargos dentro de la industria privada as\u00ED como dentro de la Administraci\u00F3n P\u00FAblica, tanto local (GDF), como Federal.\","
+ "\"verified\":false,\"contributors_enabled\":false,\"profile_sidebar_border_color\":\"C0DEED\",\"name\":\"Leonardo Larraga\",\"profile_background_color\":\"C0DEED\",\"created_at\":\"Tue Apr 20 23:12:25 +0000 2010\","
+ "\"is_translation_enabled\":false,\"default_profile_image\":false,\"followers_count\":726,\"profile_image_url_https\":\"https://pbs.twimg.com/profile_images/440767007290429441/GkHsYcJj_normal.jpeg\","
+ "\"geo_enabled\":false,\"profile_background_image_url\":\"http://abs.twimg.com/images/themes/theme1/bg.png\",\"profile_background_image_url_https\":\"https://abs.twimg.com/images/themes/theme1/bg.png\","
+ "\"follow_request_sent\":null,\"url\":\"http://instagram.com/larraga_ld\",\"utc_offset\":-21600,\"time_zone\":\"Mexico City\",\"notifications\":null,\"friends_count\":150,\"profile_use_background_image\":true,"
+ "\"profile_sidebar_fill_color\":\"DDEEF6\",\"screen_name\":\"larraga_ld\",\"id_str\":\"135306436\",\"profile_image_url\":\"http://pbs.twimg.com/profile_images/440767007290429441/GkHsYcJj_normal.jpeg\","
+ "\"is_translator\":false,\"listed_count\":0}}";
String word = "{\"words\":[\"#prayformh370\"]}";
documentDTO.setCrisisDTO(crisis);
documentDTO.setHasHumanLabels(false);
documentDTO.setIsEvaluationSet(true);
documentDTO.setReceivedAt(new Date());
documentDTO.setLanguage("en");
documentDTO.setDoctype("Tweet");
documentDTO.setData(tweet);
documentDTO.setWordFeatures(word);
documentDTO.setValueAsTrainingSample(0.5);
return documentDTO;
}
/**
* Test of addDocument method, of class DocumentResourceFacadeImp.
*/
@Test
public void testAddDocument() {
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
assertNotNull(documentDTO);
assertEquals(documentDTO.getData(), documentDTO.getData());
}
/**
* Test of deleteNoLabelDocument method, of class DocumentResourceFacadeImp.
*/
@Test
public void testDeleteNoLabelDocument_DocumentDTO() {
documentDTO.setHasHumanLabels(false);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
int expResult = 1;
entityManager.getTransaction().begin();
int delCount = documentResourceFacadeImp
.deleteNoLabelDocument(documentDTO);
entityManager.getTransaction().commit();
assertEquals(expResult, delCount);
documentDTO = null;
}
/**
* Test of deleteNoLabelDocument method, of class DocumentResourceFacadeImp.
*/
@Test
public void testDeleteNoLabelDocument_List() {
List<DocumentDTO> collection = new ArrayList<DocumentDTO>();
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
collection.add(documentDTO);
int result = documentResourceFacadeImp
.deleteNoLabelDocument(collection);
assertEquals(1, result);
documentDTO = null;
}
/**
* Test of deleteUnassignedDocument method, of class
* DocumentResourceFacadeImp.
*/
@Test
public void testDeleteUnassignedDocument() {
documentDTO.setHasHumanLabels(false);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
int delCount = documentResourceFacadeImp
.deleteUnassignedDocument(documentDTO);
entityManager.getTransaction().commit();
assertEquals(1, delCount);
documentDTO = null;
}
/**
* Test of deleteUnassignedDocumentCollection method, of class
* DocumentResourceFacadeImp.
*/
@Test
public void testDeleteUnassignedDocumentCollection() {
List<Long> collection = new ArrayList<Long>();
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
collection.add(documentDTO.getDocumentID());
int result = documentResourceFacadeImp
.deleteUnassignedDocumentCollection(collection);
assertEquals(1, result);
documentDTO = null;
}
/**
* Test of deleteStaleDocuments method, of class DocumentResourceFacadeImp.
*/
/*
* @Test public void testDeleteStaleDocuments() {
* String joinType = ""; String
* joinTable = ""; String joinColumn = ""; String sortOrder = ""; String[]
* orderBy = null; String maxTaskAge = ""; String scanInterval = ""; int
* result = documentResourceFacadeImp.deleteStaleDocuments(joinType,
* joinTable, joinColumn, sortOrder, orderBy, maxTaskAge, scanInterval);
* assertEquals(1, result); }
*/
/**
* Test of editDocument method, of class DocumentResourceFacadeImp.
*/
@Test
public void testEditDocument() {
try {
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
documentDTO.setHasHumanLabels(true);
Date date = new Date();
documentDTO.setReceivedAt(date);
documentDTO = documentResourceFacadeImp.editDocument(documentDTO);
assertEquals(date, documentDTO.getReceivedAt());
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while editting the document "+ex.getMessage());
fail("testEditDocument failed");
}
}
/**
* Test of deleteDocument method, of class DocumentResourceFacadeImp.
*/
@Test
public void testDeleteDocument() {
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
Integer deleteDocCount = documentResourceFacadeImp
.deleteDocument(documentDTO);
entityManager.getTransaction().commit();
assertEquals(Integer.valueOf(1), deleteDocCount);
documentDTO = null;
}
/**
* Test of findByCriteria method, of class DocumentResourceFacadeImp.
*/
@Test
public void testFindByCriteria() {
try {
documentDTO.setHasHumanLabels(true);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
String columnName = "hasHumanLabels";
boolean value = true;
List<DocumentDTO> result = documentResourceFacadeImp
.findByCriteria(columnName, value);
assertEquals(value, result.get(0).getHasHumanLabels());
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while finding document by criteria "+ex.getMessage());
fail("testFindByCriteria failed");
}
}
/**
* Test of findDocumentByID method, of class DocumentResourceFacadeImp.
*/
@Test
public void testFindDocumentByID() {
try {
documentDTO.setIsEvaluationSet(true);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
Long id = documentDTO.getDocumentID();
DocumentDTO result = documentResourceFacadeImp.findDocumentByID(id);
assertEquals(id, result.getDocumentID());
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while finding document by id "+ex.getMessage());
fail("testFindDocumentByID failed");
}
}
/**
* Test of findDocumentsByCrisisID method, of class
* DocumentResourceFacadeImp.
*/
@Test
public void testFindDocumentsByCrisisID() {
try {
documentDTO.setIsEvaluationSet(true);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
Long crisisId = documentDTO.getCrisisDTO().getCrisisID();
List<DocumentDTO> result = documentResourceFacadeImp
.findDocumentsByCrisisID(crisisId);
assertEquals(crisisId, result.get(0).getCrisisDTO().getCrisisID());
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while finding document by crisisId "+ex.getMessage());
fail("testFindDocumentsByCrisisID failed");
}
}
/**
* Test of getAllDocuments method, of class DocumentResourceFacadeImp.
*/
@Test
public void testGetAllDocuments() {
try {
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
List<DocumentDTO> result = documentResourceFacadeImp
.getAllDocuments();
assertNotNull(result);
assertTrue(result.size() >= 1);
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while fetching all documents "+ex.getMessage());
fail("testGetAllDocuments failed");
}
}
/**
* Test of findLabeledDocumentsByCrisisID method, of class
* DocumentResourceFacadeImp.
*/
@Test
public void testFindLabeledDocumentsByCrisisID() {
try {
documentDTO.setHasHumanLabels(true);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
Long crisisId = documentDTO.getCrisisDTO().getCrisisID();
List<DocumentDTO> result = documentResourceFacadeImp
.findLabeledDocumentsByCrisisID(crisisId);
assertNotNull(result);
assertEquals(true, result.get(0).getHasHumanLabels());
assertTrue(result.size() >= 1);
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while finding Labelled documents by crisisId "+ex.getMessage());
fail("testFindLabeledDocumentsByCrisisID failed");
}
}
/**
* Test of findUnLabeledDocumentsByCrisisID method, of class
* DocumentResourceFacadeImp.
*/
@Test
public void testFindUnLabeledDocumentsByCrisisID() {
try {
documentDTO.setHasHumanLabels(false);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
Long crisisId = documentDTO.getCrisisDTO().getCrisisID();
List<DocumentDTO> result = documentResourceFacadeImp
.findUnLabeledDocumentsByCrisisID(crisisId);
assertNotNull(result);
assertEquals(false, result.get(0).getHasHumanLabels());
assertTrue(result.size() >= 1);
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while finding UnLabelled documents by crisisId "+ex.getMessage());
fail("testFindUnLabeledDocumentsByCrisisID failed");
}
}
/**
* Test of getDocumentCollectionForNominalLabel method, of class
* DocumentResourceFacadeImp.
*/
/*
* @Test public void testGetDocumentCollectionForNominalLabel() { try {
* DocumentDTO
* doc = getDoc(); doc.setHasHumanLabels(true);
* entityManager.getTransaction().begin(); doc =
* documentResourceFacadeImp.addDocument(doc);
* entityManager.getTransaction().commit();
*
* Criterion criterion = Restrictions.conjunction()
* .add(Restrictions.eq("documentId", doc.getDocumentID()))
* .add(Restrictions.eq("hasHumanLabels",true)); List<DocumentDTO> result =
* documentResourceFacadeImp
* .getDocumentCollectionForNominalLabel(criterion); assertNotNull(result);
* assertEquals(doc.getCrisisDTO().getCrisisID(),
* result.get(0).getCrisisDTO().getCrisisID());
*
* entityManager.getTransaction().begin();
* documentResourceFacadeImp.deleteDocument(doc);
* entityManager.getTransaction().commit(); } catch (PropertyNotSetException
* ex) {
* //Logger.getLogger(DocumentResourceFacadeImpTest.class.getName()).log
* (Level.SEVERE, null, ex);
* fail("testGetDocumentCollectionForNominalLabel failed"); } }
*/
/**
* Test of getDocumentCollectionWithNominalLabelData method, of class
* DocumentResourceFacadeImp.
*/
/*
* @Test public void testGetDocumentCollectionWithNominalLabelData() { try {
* Long
* nominalLabelID = 320L; List<DocumentDTO> result =
* documentResourceFacadeImp
* .getDocumentCollectionWithNominalLabelData(nominalLabelID); //
* assertNotNull(result); assertEquals(Long.valueOf(320),
* result.get(0).getNominalLabelDTO().getNominalLabelId()); } catch
* (Exception ex) { //
* Logger.getLogger(DocumentResourceFacadeImpTest.class.getName
* ()).log(Level.SEVERE, null, ex);
* fail("testGetDocumentCollectionWithNominalLabelData failed: "+ex); } }
*/
/**
* Test of getDocumentWithAllFieldsByID method, of class
* DocumentResourceFacadeImp.
*/
@Test
public void testGetDocumentWithAllFieldsByID() {
try {
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
Long id = documentDTO.getDocumentID();
DocumentDTO result = documentResourceFacadeImp
.getDocumentWithAllFieldsByID(id);
assertEquals(id, result.getDocumentID());
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while fetching document with all fields by id "+ex.getMessage());
fail("testGetDocumentWithAllFieldsByID failed");
}
}
/**
* Test of isDocumentExists method, of class DocumentResourceFacadeImp.
*/
@Test
public void testIsDocumentExists() {
try {
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
Long id = documentDTO.getDocumentID();
boolean result = documentResourceFacadeImp.isDocumentExists(id);
assertEquals(true, result);
entityManager.getTransaction().begin();
documentResourceFacadeImp.deleteDocument(documentDTO);
entityManager.getTransaction().commit();
documentDTO = null;
boolean result2 = documentResourceFacadeImp.isDocumentExists(id);
assertEquals(false, result2);
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while checking whether document exist or not "+ex.getMessage());
fail("testIsDocumentExists failed");
}
}
/**
* Test of updateHasHumanLabel method, of class DocumentResourceFacadeImp.
*/
@Test
public void testUpdateHasHumanLabel() {
try {
documentDTO.setHasHumanLabels(false);
entityManager.getTransaction().begin();
documentDTO = documentResourceFacadeImp.addDocument(documentDTO);
entityManager.getTransaction().commit();
documentResourceFacadeImp.updateHasHumanLabel(documentDTO);
DocumentDTO result = documentResourceFacadeImp
.findDocumentByID(documentDTO.getDocumentID());
assertEquals(true, result.getHasHumanLabels());
} catch (PropertyNotSetException ex) {
logger.error("PropertyNotSetException while updating human label "+ex.getMessage());
fail("testUpdateHasHumanLabel failed");
}
}
}