Search in sources :

Example 41 with TrackedEntity

use of org.hisp.dhis.tracker.domain.TrackedEntity in project dhis2-core by dhis2.

the class TrackerEntityInstanceStrategyTest method verifyStrategyFiltersOutNonRootTei.

@Test
void verifyStrategyFiltersOutNonRootTei() {
    // Create preheat params
    final List<TrackedEntity> trackedEntities = rnd.objects(TrackedEntity.class, 2).collect(Collectors.toList());
    final TrackerImportParams params = TrackerImportParams.builder().trackedEntities(trackedEntities).build();
    // Preheat
    TrackerPreheat preheat = new TrackerPreheat();
    final List<String> rootUids = trackedEntities.stream().map(TrackedEntity::getTrackedEntity).collect(Collectors.toList());
    // Add uid of non-root tei
    rootUids.add("noroottei");
    List<List<String>> uids = new ArrayList<>();
    uids.add(rootUids);
    // when
    strategy.add(params, uids, preheat);
    preheat.createReferenceTree();
    assertTrue(preheat.getReference(trackedEntities.get(0).getTrackedEntity()).isPresent());
    assertTrue(preheat.getReference(trackedEntities.get(1).getTrackedEntity()).isPresent());
    assertFalse(preheat.getReference("noroottei").isPresent());
}
Also used : TrackerImportParams(org.hisp.dhis.tracker.TrackerImportParams) TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity) ArrayList(java.util.ArrayList) TrackerPreheat(org.hisp.dhis.tracker.preheat.TrackerPreheat) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.jupiter.api.Test)

Example 42 with TrackedEntity

use of org.hisp.dhis.tracker.domain.TrackedEntity in project dhis2-core by dhis2.

the class DefaultTrackerValidationServiceTest method childEntitiesOfInvalidParentsAreStillValidated.

@Test
void childEntitiesOfInvalidParentsAreStillValidated() {
    // Test shows
    // the children of a tracked entity will still be validated even if it
    // as a parent is invalid
    TrackedEntity invalidTrackedEntity = trackedEntity();
    Enrollment invalidEnrollment = enrollment();
    invalidTrackedEntity.setEnrollments(enrollments(invalidEnrollment));
    Event invalidEvent = event();
    invalidEnrollment.setEvents(events(invalidEvent));
    TrackerBundle bundle = newBundle().validationMode(ValidationMode.FULL).trackedEntities(trackedEntities(invalidTrackedEntity)).enrollments(invalidTrackedEntity.getEnrollments()).events(invalidEnrollment.getEvents()).build();
    ValidationHook hook = ValidationHook.builder().validateTrackedEntity((reporter, te) -> reporter.addErrorIf(() -> invalidTrackedEntity.equals(te), te, TrackerErrorCode.E1090)).validateEnrollment((reporter, enrollment) -> reporter.addErrorIf(() -> invalidEnrollment.equals(enrollment), enrollment, TrackerErrorCode.E1069)).validateEvent((reporter, event) -> reporter.addErrorIf(() -> invalidEvent.equals(event), event, TrackerErrorCode.E1032)).build();
    service = new DefaultTrackerValidationService(List.of(hook), Collections.emptyList());
    TrackerValidationReport report = service.validate(bundle);
    assertTrue(report.hasErrors());
    assertEquals(3, report.getErrors().size());
    assertHasError(report, TrackerErrorCode.E1090, invalidTrackedEntity);
    assertHasError(report, TrackerErrorCode.E1069, invalidEnrollment);
    assertHasError(report, TrackerErrorCode.E1032, invalidEvent);
    assertTrue(bundle.getTrackedEntities().isEmpty());
    assertTrue(bundle.getEnrollments().isEmpty());
    assertTrue(bundle.getEvents().isEmpty());
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Arrays(java.util.Arrays) ValidationErrorReporter(org.hisp.dhis.tracker.report.ValidationErrorReporter) Mockito.verifyNoInteractions(org.mockito.Mockito.verifyNoInteractions) ArrayList(java.util.ArrayList) Enrollment(org.hisp.dhis.tracker.domain.Enrollment) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) AssertTrackerValidationReport.assertHasWarning(org.hisp.dhis.tracker.validation.hooks.AssertTrackerValidationReport.assertHasWarning) BiConsumer(java.util.function.BiConsumer) User(org.hisp.dhis.user.User) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Event(org.hisp.dhis.tracker.domain.Event) TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity) Mockito.times(org.mockito.Mockito.times) Mockito.when(org.mockito.Mockito.when) ValidationMode(org.hisp.dhis.tracker.ValidationMode) TrackerBundle(org.hisp.dhis.tracker.bundle.TrackerBundle) AbstractTrackerDtoValidationHook(org.hisp.dhis.tracker.validation.hooks.AbstractTrackerDtoValidationHook) Mockito.verify(org.mockito.Mockito.verify) TrackerErrorCode(org.hisp.dhis.tracker.report.TrackerErrorCode) Objects(java.util.Objects) Test(org.junit.jupiter.api.Test) List(java.util.List) Builder(lombok.Builder) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) TrackerImportStrategy(org.hisp.dhis.tracker.TrackerImportStrategy) TrackerValidationReport(org.hisp.dhis.tracker.report.TrackerValidationReport) AssertTrackerValidationReport.assertHasError(org.hisp.dhis.tracker.validation.hooks.AssertTrackerValidationReport.assertHasError) CodeGenerator(org.hisp.dhis.common.CodeGenerator) NotNull(org.jetbrains.annotations.NotNull) Collections(java.util.Collections) Mockito.mock(org.mockito.Mockito.mock) TrackerValidationReport(org.hisp.dhis.tracker.report.TrackerValidationReport) TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity) Enrollment(org.hisp.dhis.tracker.domain.Enrollment) Event(org.hisp.dhis.tracker.domain.Event) TrackerBundle(org.hisp.dhis.tracker.bundle.TrackerBundle) AbstractTrackerDtoValidationHook(org.hisp.dhis.tracker.validation.hooks.AbstractTrackerDtoValidationHook) Test(org.junit.jupiter.api.Test)

Example 43 with TrackedEntity

use of org.hisp.dhis.tracker.domain.TrackedEntity in project dhis2-core by dhis2.

the class AssignValueImplementerTest method testAssignAttributeValueForEnrollmentsWhenAttributeIsAlreadyPresentInTeiAndCanBeOverwritten.

@Test
void testAssignAttributeValueForEnrollmentsWhenAttributeIsAlreadyPresentInTeiAndCanBeOverwritten() {
    when(systemSettingManager.getBooleanSetting(SettingKey.RULE_ENGINE_ASSIGN_OVERWRITE)).thenReturn(Boolean.TRUE);
    List<Enrollment> enrollments = Lists.newArrayList(getEnrollmentWithAttributeNOTSet());
    List<TrackedEntity> trackedEntities = Lists.newArrayList(getTrackedEntitiesWithAttributeSet());
    bundle.setEnrollments(enrollments);
    bundle.setTrackedEntities(trackedEntities);
    bundle.setRuleEffects(getRuleEnrollmentEffects(enrollments));
    Map<String, List<ProgramRuleIssue>> enrollmentIssues = implementerToTest.validateEnrollments(bundle);
    Enrollment enrollment = bundle.getEnrollments().stream().filter(e -> e.getEnrollment().equals(SECOND_ENROLLMENT_ID)).findAny().get();
    TrackedEntity trackedEntity = bundle.getTrackedEntities().stream().filter(e -> e.getTrackedEntity().equals(TRACKED_ENTITY_ID)).findAny().get();
    Optional<Attribute> enrollmentAttribute = enrollment.getAttributes().stream().filter(at -> at.getAttribute().equals(ATTRIBUTE_ID)).findAny();
    Optional<Attribute> teiAttribute = trackedEntity.getAttributes().stream().filter(at -> at.getAttribute().equals(ATTRIBUTE_ID)).findAny();
    assertFalse(enrollmentAttribute.isPresent());
    assertTrue(teiAttribute.isPresent());
    assertEquals(TEI_ATTRIBUTE_NEW_VALUE, teiAttribute.get().getValue());
    assertEquals(1, enrollmentIssues.size());
    assertEquals(1, enrollmentIssues.get(SECOND_ENROLLMENT_ID).size());
    assertEquals(WARNING, enrollmentIssues.get(SECOND_ENROLLMENT_ID).get(0).getIssueType());
}
Also used : Strictness(org.mockito.quality.Strictness) WARNING(org.hisp.dhis.tracker.programrule.IssueType.WARNING) DataValue(org.hisp.dhis.tracker.domain.DataValue) BeforeEach(org.junit.jupiter.api.BeforeEach) TRACKED_ENTITY_ATTRIBUTE(org.hisp.dhis.rules.models.AttributeType.TRACKED_ENTITY_ATTRIBUTE) MockitoSettings(org.mockito.junit.jupiter.MockitoSettings) RuleEffects(org.hisp.dhis.rules.models.RuleEffects) ERROR(org.hisp.dhis.tracker.programrule.IssueType.ERROR) RuleActionAssign(org.hisp.dhis.rules.models.RuleActionAssign) ValueType(org.hisp.dhis.common.ValueType) Attribute(org.hisp.dhis.tracker.domain.Attribute) Mock(org.mockito.Mock) RuleEffect(org.hisp.dhis.rules.models.RuleEffect) ProgramStageDataElement(org.hisp.dhis.program.ProgramStageDataElement) ENROLLMENT(org.hisp.dhis.rules.models.TrackerObjectType.ENROLLMENT) DataElement(org.hisp.dhis.dataelement.DataElement) Enrollment(org.hisp.dhis.tracker.domain.Enrollment) Lists(com.google.common.collect.Lists) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) DATA_ELEMENT(org.hisp.dhis.rules.models.AttributeType.DATA_ELEMENT) Map(java.util.Map) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) SystemSettingManager(org.hisp.dhis.setting.SystemSettingManager) AssignValueImplementer(org.hisp.dhis.tracker.programrule.implementers.AssignValueImplementer) InjectMocks(org.mockito.InjectMocks) Event(org.hisp.dhis.tracker.domain.Event) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) EVENT(org.hisp.dhis.rules.models.TrackerObjectType.EVENT) TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity) Set(java.util.Set) EventStatus(org.hisp.dhis.event.EventStatus) Mockito.when(org.mockito.Mockito.when) TrackerBundle(org.hisp.dhis.tracker.bundle.TrackerBundle) ProgramStage(org.hisp.dhis.program.ProgramStage) EnrollmentStatus(org.hisp.dhis.tracker.domain.EnrollmentStatus) Sets(com.google.common.collect.Sets) Test(org.junit.jupiter.api.Test) List(java.util.List) RuleAction(org.hisp.dhis.rules.models.RuleAction) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Optional(java.util.Optional) SettingKey(org.hisp.dhis.setting.SettingKey) ValidationStrategy(org.hisp.dhis.program.ValidationStrategy) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute) TrackerPreheat(org.hisp.dhis.tracker.preheat.TrackerPreheat) DhisConvenienceTest(org.hisp.dhis.DhisConvenienceTest) Attribute(org.hisp.dhis.tracker.domain.Attribute) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute) TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity) Enrollment(org.hisp.dhis.tracker.domain.Enrollment) List(java.util.List) Test(org.junit.jupiter.api.Test) DhisConvenienceTest(org.hisp.dhis.DhisConvenienceTest)

Example 44 with TrackedEntity

use of org.hisp.dhis.tracker.domain.TrackedEntity in project dhis2-core by dhis2.

the class FileResourceSupplierTest method getTrackedEntity.

private TrackedEntity getTrackedEntity() {
    Attribute attribute = new Attribute();
    attribute.setAttribute(NUMERIC_ATTRIBUTE_UID);
    attribute.setValueType(ValueType.NUMBER);
    TrackedEntity trackedEntity = new TrackedEntity();
    trackedEntity.setAttributes(Lists.newArrayList(attribute));
    return trackedEntity;
}
Also used : Attribute(org.hisp.dhis.tracker.domain.Attribute) TrackedEntityAttribute(org.hisp.dhis.trackedentity.TrackedEntityAttribute) TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity)

Example 45 with TrackedEntity

use of org.hisp.dhis.tracker.domain.TrackedEntity in project dhis2-core by dhis2.

the class PreCheckMandatoryFieldsValidationHookTest method verifyTrackedEntityValidationSuccess.

@Test
void verifyTrackedEntityValidationSuccess() {
    TrackedEntity trackedEntity = TrackedEntity.builder().trackedEntity(CodeGenerator.generateUid()).trackedEntityType(CodeGenerator.generateUid()).orgUnit(CodeGenerator.generateUid()).build();
    ValidationErrorReporter reporter = new ValidationErrorReporter(ctx);
    validationHook.validateTrackedEntity(reporter, trackedEntity);
    assertFalse(reporter.hasErrors());
}
Also used : TrackedEntity(org.hisp.dhis.tracker.domain.TrackedEntity) ValidationErrorReporter(org.hisp.dhis.tracker.report.ValidationErrorReporter) Test(org.junit.jupiter.api.Test)

Aggregations

TrackedEntity (org.hisp.dhis.tracker.domain.TrackedEntity)69 Test (org.junit.jupiter.api.Test)55 ValidationErrorReporter (org.hisp.dhis.tracker.report.ValidationErrorReporter)45 TrackedEntityType (org.hisp.dhis.trackedentity.TrackedEntityType)19 Enrollment (org.hisp.dhis.tracker.domain.Enrollment)18 DhisConvenienceTest (org.hisp.dhis.DhisConvenienceTest)17 TrackedEntityAttribute (org.hisp.dhis.trackedentity.TrackedEntityAttribute)17 Event (org.hisp.dhis.tracker.domain.Event)17 TrackerBundle (org.hisp.dhis.tracker.bundle.TrackerBundle)13 TrackerPreheat (org.hisp.dhis.tracker.preheat.TrackerPreheat)11 BeforeEach (org.junit.jupiter.api.BeforeEach)11 List (java.util.List)10 Attribute (org.hisp.dhis.tracker.domain.Attribute)10 Relationship (org.hisp.dhis.tracker.domain.Relationship)10 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)10 Assertions.assertFalse (org.junit.jupiter.api.Assertions.assertFalse)10 Assertions.assertTrue (org.junit.jupiter.api.Assertions.assertTrue)10 Mockito.when (org.mockito.Mockito.when)10 Optional (java.util.Optional)9 ExtendWith (org.junit.jupiter.api.extension.ExtendWith)9