From 850b60b0016a0c1daf2321ebb58c97c3eca53b40 Mon Sep 17 00:00:00 2001 From: Rahul Pamnani Date: Thu, 15 Aug 2024 19:03:14 +0530 Subject: [PATCH 1/3] Add test for MassIndexerService --- .../org/openelisglobal/AppTestConfig.java | 2 +- .../search/MassIndexerServiceTest.java | 92 +++++++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java diff --git a/src/test/java/org/openelisglobal/AppTestConfig.java b/src/test/java/org/openelisglobal/AppTestConfig.java index a5260620be..7dcf916e9a 100644 --- a/src/test/java/org/openelisglobal/AppTestConfig.java +++ b/src/test/java/org/openelisglobal/AppTestConfig.java @@ -50,7 +50,7 @@ "org.openelisglobal.systemusermodule.service", "org.openelisglobal.rolemodule.service", "org.openelisglobal.systemusermodule.daoimpl", "org.openelisglobal.systemusermodule.service", "org.openelisglobal.login.service", "org.openelisglobal.view", "org.openelisglobal.search.service", - "org.openelisglobal.sample.daoimpl", }, excludeFilters = { + "org.openelisglobal.sample.daoimpl", "org.openelisglobal.hibernate.search.massindexer" }, excludeFilters = { @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.openelisglobal.patient.controller.*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.openelisglobal.dictionary.controller.*.java"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.openelisglobal.config.*"), diff --git a/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java b/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java new file mode 100644 index 0000000000..cf45fb952c --- /dev/null +++ b/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java @@ -0,0 +1,92 @@ +package org.openelisglobal.search; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.Transactional; +import org.hibernate.search.mapper.orm.Search; +import org.hibernate.search.mapper.orm.session.SearchSession; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openelisglobal.BaseWebContextSensitiveTest; +import org.openelisglobal.hibernate.search.massindexer.MassIndexerService; +import org.openelisglobal.patient.service.PatientService; +import org.openelisglobal.patient.valueholder.Patient; +import org.openelisglobal.person.service.PersonService; +import org.openelisglobal.person.valueholder.Person; +import org.springframework.beans.factory.annotation.Autowired; + +public class MassIndexerServiceTest extends BaseWebContextSensitiveTest { + + @PersistenceContext + EntityManager entityManager; + + @Autowired + MassIndexerService massIndexerService; + + @Autowired + PatientService patientService; + + @Autowired + PersonService personService; + + @Before + public void init() throws Exception { + patientService.deleteAll(patientService.getAll()); + personService.deleteAll(personService.getAll()); + } + + @After + public void tearDown() { + patientService.deleteAll(patientService.getAll()); + personService.deleteAll(personService.getAll()); + } + + @Test + @Transactional + public void reindex_shouldReindexEntities() throws Exception { + String firstName = "John"; + String lastname = "Doe"; + String dob = "12/12/1992"; + String gender = "M"; + Patient pat = createPatient(firstName, lastname, dob, gender); + patientService.insert(pat); + + SearchSession searchSession = Search.session(entityManager); + // remove all entities of Patient type from the Lucene index but not from the + // database + searchSession.workspace(Object.class).purge(); + long totalHitCount = searchSession.search(Patient.class).where(f -> f.matchAll()).fetchTotalHitCount(); + Assert.assertEquals(0, totalHitCount); + + massIndexerService.reindex(); + Assert.assertEquals(1, patientService.getAllPatients().size()); + + } + + private Patient createPatient(String firstName, String LastName, String birthDate, String gender) + throws ParseException { + Person person = new Person(); + person.setFirstName(firstName); + person.setLastName(LastName); + personService.save(person); + + DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + Date date = dateFormat.parse(birthDate); + long time = date.getTime(); + Timestamp dob = new Timestamp(time); + + Patient pat = new Patient(); + pat.setPerson(person); + pat.setBirthDate(dob); + pat.setGender(gender); + + return pat; + } +} \ No newline at end of file From f6483ff5ff4e9def41c7c7eb468af620d68edbb7 Mon Sep 17 00:00:00 2001 From: Rahul Pamnani Date: Thu, 15 Aug 2024 19:08:41 +0530 Subject: [PATCH 2/3] Fix comment --- .../java/org/openelisglobal/search/MassIndexerServiceTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java b/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java index cf45fb952c..16f18d094f 100644 --- a/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java +++ b/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java @@ -59,8 +59,7 @@ public void reindex_shouldReindexEntities() throws Exception { patientService.insert(pat); SearchSession searchSession = Search.session(entityManager); - // remove all entities of Patient type from the Lucene index but not from the - // database + // remove all entities from the Lucene index but not from the database searchSession.workspace(Object.class).purge(); long totalHitCount = searchSession.search(Patient.class).where(f -> f.matchAll()).fetchTotalHitCount(); Assert.assertEquals(0, totalHitCount); From 42d6c1a635413bce7d687458f37df64970d8cea1 Mon Sep 17 00:00:00 2001 From: Rahul Pamnani Date: Thu, 15 Aug 2024 22:40:35 +0530 Subject: [PATCH 3/3] Use totalHitCount from index in Assert --- .../java/org/openelisglobal/search/MassIndexerServiceTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java b/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java index 16f18d094f..ea77154b27 100644 --- a/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java +++ b/src/test/java/org/openelisglobal/search/MassIndexerServiceTest.java @@ -65,7 +65,8 @@ public void reindex_shouldReindexEntities() throws Exception { Assert.assertEquals(0, totalHitCount); massIndexerService.reindex(); - Assert.assertEquals(1, patientService.getAllPatients().size()); + totalHitCount = searchSession.search(Patient.class).where(f -> f.matchAll()).fetchTotalHitCount(); + Assert.assertEquals(1, totalHitCount); }