Search in sources :

Example 1 with RDCF

use of de.symeda.sormas.ui.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class ContactImporterTest method testImportCaseContactsDifferentAddressTypes.

@Test
public void testImportCaseContactsDifferentAddressTypes() throws IOException, InvalidColumnException, InterruptedException, CsvValidationException, URISyntaxException {
    ContactFacadeEjb contactFacade = getBean(ContactFacadeEjbLocal.class);
    RDCF rdcf = creator.createRDCF("Abia", "Umuahia North", "Urban Ward 2", "Anelechi Hospital");
    UserDto user = creator.createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR);
    PersonDto casePerson = creator.createPerson("John", "Smith");
    CaseDataDto caze = creator.createCase(user.toReference(), casePerson.toReference(), Disease.CORONAVIRUS, CaseClassification.CONFIRMED, InvestigationStatus.PENDING, new Date(), rdcf);
    // import of 3 contacts with different address types
    File csvFile = new File(getClass().getClassLoader().getResource("sormas_case_contact_import_test_address_types.csv").toURI());
    ContactImporter contactImporter = new ContactImporterExtension(csvFile, user, caze);
    ImportResultStatus importResult = contactImporter.runImport();
    List<ContactDto> contacts = getContactFacade().getAllAfter(null);
    assertEquals(3, contacts.size());
    boolean foundOtto = false;
    boolean foundOskar = false;
    boolean foundOona = false;
    for (ContactDto contact : contacts) {
        PersonDto person = getPersonFacade().getPersonByUuid(contact.getPerson().getUuid());
        if ("Otto".equals(person.getFirstName())) {
            foundOtto = true;
            assertTrue(CollectionUtils.isEmpty(person.getAddresses()));
            assertEquals("131", person.getAddress().getHouseNumber());
        }
        if ("Oskar".equals(person.getFirstName())) {
            foundOskar = true;
            assertTrue(CollectionUtils.isEmpty(person.getAddresses()));
            assertEquals("132", person.getAddress().getHouseNumber());
        }
        if ("Oona".equals(person.getFirstName())) {
            foundOona = true;
            assertTrue(person.getAddress().checkIsEmptyLocation());
            assertEquals(1, person.getAddresses().size());
            assertEquals("133", person.getAddresses().get(0).getHouseNumber());
        }
    }
    assertTrue("Not all contacts found.", foundOtto && foundOskar && foundOona);
}
Also used : CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) PersonDto(de.symeda.sormas.api.person.PersonDto) SimilarPersonDto(de.symeda.sormas.api.person.SimilarPersonDto) UserDto(de.symeda.sormas.api.user.UserDto) ContactFacadeEjb(de.symeda.sormas.backend.contact.ContactFacadeEjb) Date(java.util.Date) RDCF(de.symeda.sormas.ui.TestDataCreator.RDCF) ContactDto(de.symeda.sormas.api.contact.ContactDto) ImportResultStatus(de.symeda.sormas.ui.importer.ImportResultStatus) File(java.io.File) AbstractBeanTest(de.symeda.sormas.ui.AbstractBeanTest) Test(org.junit.Test)

Example 2 with RDCF

use of de.symeda.sormas.ui.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class ContactImporterTest method testImportContactsWithVaccinations.

@Test
@Ignore("Remove ignore once we have replaced H2, and feature properties can be changed by code")
public void testImportContactsWithVaccinations() throws IOException, InterruptedException, CsvValidationException, InvalidColumnException, URISyntaxException {
    RDCF rdcf = creator.createRDCF("Abia", "Umuahia North", "Urban Ward 2", "Anelechi Hospital");
    UserDto user = creator.createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR);
    File csvFile = new File(getClass().getClassLoader().getResource("sormas_contact_import_test_vaccinations.csv").toURI());
    ContactImporterExtension contactImporter = new ContactImporterExtension(csvFile, user, null);
    ImportResultStatus importResult = contactImporter.runImport();
    assertEquals(contactImporter.stringBuilder.toString(), ImportResultStatus.COMPLETED, importResult);
    List<ContactDto> contacts = getContactFacade().getAllAfter(null);
    assertEquals(3, contacts.size());
    ContactDto contact1 = contacts.stream().filter(c -> c.getCaseIdExternalSystem().equals("case1")).findFirst().get();
    ContactDto contact2 = contacts.stream().filter(c -> c.getCaseIdExternalSystem().equals("case2")).findFirst().get();
    ContactDto contact3 = contacts.stream().filter(c -> c.getCaseIdExternalSystem().equals("case3")).findFirst().get();
    List<VaccinationDto> case1Vaccinations = FacadeProvider.getVaccinationFacade().getAllVaccinations(contact1.getPerson().getUuid(), Disease.CORONAVIRUS);
    assertEquals(0, case1Vaccinations.size());
    List<VaccinationDto> case2Vaccinations = FacadeProvider.getVaccinationFacade().getAllVaccinations(contact2.getPerson().getUuid(), Disease.CORONAVIRUS);
    assertEquals(1, case2Vaccinations.size());
    assertEquals(Vaccine.COMIRNATY, case2Vaccinations.get(0).getVaccineName());
    assertNull(case2Vaccinations.get(0).getHealthConditions().getChronicPulmonaryDisease());
    List<VaccinationDto> case3Vaccinations = FacadeProvider.getVaccinationFacade().getAllVaccinations(contact3.getPerson().getUuid(), Disease.CORONAVIRUS);
    assertEquals(2, case3Vaccinations.size());
    assertEquals(Vaccine.MRNA_1273, case3Vaccinations.get(0).getVaccineName());
    assertEquals(YesNoUnknown.YES, case3Vaccinations.get(0).getHealthConditions().getChronicPulmonaryDisease());
    assertEquals(Vaccine.MRNA_1273, case3Vaccinations.get(1).getVaccineName());
    assertNull(case3Vaccinations.get(1).getHealthConditions().getChronicPulmonaryDisease());
}
Also used : RDCF(de.symeda.sormas.ui.TestDataCreator.RDCF) UserDto(de.symeda.sormas.api.user.UserDto) ContactDto(de.symeda.sormas.api.contact.ContactDto) VaccinationDto(de.symeda.sormas.api.vaccination.VaccinationDto) ImportResultStatus(de.symeda.sormas.ui.importer.ImportResultStatus) File(java.io.File) Ignore(org.junit.Ignore) AbstractBeanTest(de.symeda.sormas.ui.AbstractBeanTest) Test(org.junit.Test)

Example 3 with RDCF

use of de.symeda.sormas.ui.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class ContactImporterTest method testImportCaseContacts.

@Test
public void testImportCaseContacts() throws IOException, InvalidColumnException, InterruptedException, CsvValidationException, URISyntaxException {
    ContactFacadeEjb contactFacade = getBean(ContactFacadeEjbLocal.class);
    RDCF rdcf = creator.createRDCF("Abia", "Umuahia North", "Urban Ward 2", "Anelechi Hospital");
    UserDto user = creator.createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Surv", "Sup", UserRole.SURVEILLANCE_SUPERVISOR);
    PersonDto casePerson = creator.createPerson("John", "Smith");
    CaseDataDto caze = creator.createCase(user.toReference(), casePerson.toReference(), Disease.CORONAVIRUS, CaseClassification.CONFIRMED, InvestigationStatus.PENDING, new Date(), rdcf);
    // Successful import of 5 case contacts
    File csvFile = new File(getClass().getClassLoader().getResource("sormas_case_contact_import_test_success.csv").toURI());
    ContactImporter contactImporter = new ContactImporterExtension(csvFile, user, caze);
    ImportResultStatus importResult = contactImporter.runImport();
    assertEquals(ImportResultStatus.COMPLETED, importResult);
    assertEquals(5, contactFacade.count(null));
    // Person Similarity: pick
    List<SimilarPersonDto> persons = FacadeProvider.getPersonFacade().getSimilarPersonDtos(new PersonSimilarityCriteria());
    csvFile = new File(getClass().getClassLoader().getResource("sormas_case_contact_import_test_similarities.csv").toURI());
    contactImporter = new ContactImporterExtension(csvFile, user, caze) {

        @Override
        protected <T extends PersonImportSimilarityResult> void handlePersonSimilarity(PersonDto newPerson, Consumer<T> resultConsumer, BiFunction<SimilarPersonDto, ImportSimilarityResultOption, T> createSimilarityResult, String infoText, UI currentUI) {
            List<SimilarPersonDto> entries = new ArrayList<>();
            for (SimilarPersonDto person : persons) {
                if (PersonHelper.areNamesSimilar(newPerson.getFirstName(), newPerson.getLastName(), person.getFirstName(), person.getLastName(), null)) {
                    entries.add(person);
                }
            }
            resultConsumer.accept((T) new ContactImportSimilarityResult(entries.get(0), null, ImportSimilarityResultOption.PICK));
        }
    };
    importResult = contactImporter.runImport();
    assertEquals(ImportResultStatus.COMPLETED, importResult);
    assertEquals(6, contactFacade.count(null));
    assertEquals(6, getPersonFacade().getAllUuids().size());
    // Person Similarity: skip
    csvFile = new File(getClass().getClassLoader().getResource("sormas_case_contact_import_test_similarities.csv").toURI());
    contactImporter = new ContactImporterExtension(csvFile, user, caze) {

        @Override
        protected <T extends PersonImportSimilarityResult> void handlePersonSimilarity(PersonDto newPerson, Consumer<T> resultConsumer, BiFunction<SimilarPersonDto, ImportSimilarityResultOption, T> createSimilarityResult, String infoText, UI currentUI) {
            resultConsumer.accept((T) new ContactImportSimilarityResult(null, null, ImportSimilarityResultOption.SKIP));
        }
    };
    importResult = contactImporter.runImport();
    assertEquals(ImportResultStatus.COMPLETED, importResult);
    assertEquals(6, contactFacade.count(null));
    assertEquals(6, getPersonFacade().getAllUuids().size());
    // Person Similarity: create
    csvFile = new File(getClass().getClassLoader().getResource("sormas_case_contact_import_test_similarities.csv").toURI());
    contactImporter = new ContactImporterExtension(csvFile, user, caze);
    importResult = contactImporter.runImport();
    assertEquals(ImportResultStatus.COMPLETED, importResult);
    assertEquals(7, contactFacade.count(null));
    assertEquals(7, getPersonFacade().getAllUuids().size());
    // Test import contacts from a commented CSV file
    // Successful import of 5 case contacts
    csvFile = new File(getClass().getClassLoader().getResource("sormas_case_contact_import_test_comment_success.csv").toURI());
    contactImporter = new ContactImporterExtension(csvFile, user, caze);
    importResult = contactImporter.runImport();
    assertEquals(ImportResultStatus.COMPLETED, importResult);
    assertEquals(12, contactFacade.count(null));
}
Also used : CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) PersonDto(de.symeda.sormas.api.person.PersonDto) SimilarPersonDto(de.symeda.sormas.api.person.SimilarPersonDto) UserDto(de.symeda.sormas.api.user.UserDto) ContactFacadeEjb(de.symeda.sormas.backend.contact.ContactFacadeEjb) Date(java.util.Date) PersonSimilarityCriteria(de.symeda.sormas.api.person.PersonSimilarityCriteria) SimilarPersonDto(de.symeda.sormas.api.person.SimilarPersonDto) RDCF(de.symeda.sormas.ui.TestDataCreator.RDCF) UI(com.vaadin.ui.UI) ContactImportSimilarityResult(de.symeda.sormas.ui.importer.ContactImportSimilarityResult) ImportSimilarityResultOption(de.symeda.sormas.ui.importer.ImportSimilarityResultOption) ImportResultStatus(de.symeda.sormas.ui.importer.ImportResultStatus) List(java.util.List) ArrayList(java.util.ArrayList) File(java.io.File) AbstractBeanTest(de.symeda.sormas.ui.AbstractBeanTest) Test(org.junit.Test)

Example 4 with RDCF

use of de.symeda.sormas.ui.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class InfrastructureImporterTest method testLargeFileUtf8.

@Test
public void testLargeFileUtf8() throws IOException, InvalidColumnException, InterruptedException, CsvValidationException, URISyntaxException {
    RDCF rdcf = new TestDataCreator().createRDCF("Default Region", "Default District", "Default Community", "Default Facility");
    UserDto user = creator.createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Default", "User", UserRole.ADMIN);
    // Import region
    File regionCsvFile = new File(getClass().getClassLoader().getResource("sormas_region_import_test_large_file_utf8.csv").toURI());
    InfrastructureImporter importer = new InfrastructureImporterExtension(regionCsvFile, user, InfrastructureType.REGION);
    importer.runImport();
    List<RegionReferenceDto> allActiveRegions = getRegionFacade().getAllActiveAsReference();
    RegionReferenceDto region2 = getRegionFacade().getReferencesByName("Sömé rêâlly ßtràngë cøüntry", false).get(0);
    assertEquals("Sömé rêâlly ßtràngë cøüntry", region2.getCaption());
}
Also used : RDCF(de.symeda.sormas.ui.TestDataCreator.RDCF) RegionReferenceDto(de.symeda.sormas.api.infrastructure.region.RegionReferenceDto) UserDto(de.symeda.sormas.api.user.UserDto) TestDataCreator(de.symeda.sormas.ui.TestDataCreator) File(java.io.File) AbstractBeanTest(de.symeda.sormas.ui.AbstractBeanTest) Test(org.junit.Test)

Example 5 with RDCF

use of de.symeda.sormas.ui.TestDataCreator.RDCF in project SORMAS-Project by hzi-braunschweig.

the class InfrastructureImporterTest method testDontImportDuplicateInfrastructure.

@Test
public void testDontImportDuplicateInfrastructure() throws IOException, InvalidColumnException, InterruptedException, CsvValidationException, URISyntaxException {
    RDCF rdcf = new TestDataCreator().createRDCF("Default Region", "Default District", "Default Community", "Default Facility");
    UserDto user = creator.createUser(rdcf.region.getUuid(), rdcf.district.getUuid(), rdcf.facility.getUuid(), "Default", "User", UserRole.ADMIN);
    // Import region
    File regionCsvFile = new File(getClass().getClassLoader().getResource("sormas_region_import_test.csv").toURI());
    InfrastructureImporter importer = new InfrastructureImporterExtension(regionCsvFile, user, InfrastructureType.REGION);
    assertEquals(ImportResultStatus.COMPLETED_WITH_ERRORS, importer.runImport());
    assertEquals(2, getRegionFacade().count(new RegionCriteria()));
    // Import district
    File districtCsvFile = new File(getClass().getClassLoader().getResource("sormas_district_import_test.csv").toURI());
    importer = new InfrastructureImporterExtension(districtCsvFile, user, InfrastructureType.DISTRICT);
    assertEquals(ImportResultStatus.COMPLETED_WITH_ERRORS, importer.runImport());
    assertEquals(2, getDistrictFacade().count(new DistrictCriteria()));
    // Import community
    File communityCsvFile = new File(getClass().getClassLoader().getResource("sormas_community_import_test.csv").toURI());
    importer = new InfrastructureImporterExtension(communityCsvFile, user, InfrastructureType.COMMUNITY);
    assertEquals(ImportResultStatus.COMPLETED_WITH_ERRORS, importer.runImport());
    assertEquals(2, getCommunityFacade().count(new CommunityCriteria()));
    // Import facility
    File facilityCsvFile = new File(getClass().getClassLoader().getResource("sormas_facility_import_test.csv").toURI());
    importer = new InfrastructureImporterExtension(facilityCsvFile, user, InfrastructureType.FACILITY);
    assertEquals(ImportResultStatus.COMPLETED_WITH_ERRORS, importer.runImport());
    assertEquals(3, getFacilityFacade().count(new FacilityCriteria()));
    // Import point of entry
    File poeCsvFile = new File(getClass().getClassLoader().getResource("sormas_poe_import_test.csv").toURI());
    importer = new InfrastructureImporterExtension(poeCsvFile, user, InfrastructureType.POINT_OF_ENTRY);
    assertEquals(ImportResultStatus.COMPLETED_WITH_ERRORS, importer.runImport());
    assertEquals(1, getPointOfEntryFacade().count(new PointOfEntryCriteria()));
}
Also used : PointOfEntryCriteria(de.symeda.sormas.api.infrastructure.pointofentry.PointOfEntryCriteria) RDCF(de.symeda.sormas.ui.TestDataCreator.RDCF) RegionCriteria(de.symeda.sormas.api.infrastructure.region.RegionCriteria) UserDto(de.symeda.sormas.api.user.UserDto) TestDataCreator(de.symeda.sormas.ui.TestDataCreator) DistrictCriteria(de.symeda.sormas.api.infrastructure.district.DistrictCriteria) FacilityCriteria(de.symeda.sormas.api.infrastructure.facility.FacilityCriteria) File(java.io.File) CommunityCriteria(de.symeda.sormas.api.infrastructure.community.CommunityCriteria) AbstractBeanTest(de.symeda.sormas.ui.AbstractBeanTest) Test(org.junit.Test)

Aggregations

UserDto (de.symeda.sormas.api.user.UserDto)20 AbstractBeanTest (de.symeda.sormas.ui.AbstractBeanTest)20 RDCF (de.symeda.sormas.ui.TestDataCreator.RDCF)20 File (java.io.File)20 Test (org.junit.Test)20 ImportResultStatus (de.symeda.sormas.ui.importer.ImportResultStatus)12 Date (java.util.Date)11 EventDto (de.symeda.sormas.api.event.EventDto)8 PersonDto (de.symeda.sormas.api.person.PersonDto)8 SimilarPersonDto (de.symeda.sormas.api.person.SimilarPersonDto)8 TestDataCreator (de.symeda.sormas.ui.TestDataCreator)8 EventReferenceDto (de.symeda.sormas.api.event.EventReferenceDto)7 EventParticipantFacadeEjbLocal (de.symeda.sormas.backend.event.EventParticipantFacadeEjb.EventParticipantFacadeEjbLocal)7 EventParticipantCriteria (de.symeda.sormas.api.event.EventParticipantCriteria)6 RegionReferenceDto (de.symeda.sormas.api.infrastructure.region.RegionReferenceDto)6 UI (com.vaadin.ui.UI)4 EventParticipantDto (de.symeda.sormas.api.event.EventParticipantDto)4 CaseDataDto (de.symeda.sormas.api.caze.CaseDataDto)3 EventParticipantIndexDto (de.symeda.sormas.api.event.EventParticipantIndexDto)3 PersonSimilarityCriteria (de.symeda.sormas.api.person.PersonSimilarityCriteria)3