use of org.hisp.dhis.tracker.domain.Event in project dhis2-core by dhis2.
the class EventTrackerConverterServiceTest method fromForRuleEngineGivenExistingEventMergesNewDataValuesWithDBOnes.
@Test
void fromForRuleEngineGivenExistingEventMergesNewDataValuesWithDBOnes() {
setUpMocks();
ProgramStageInstance existingPsi = programStageInstance();
EventDataValue existingDataValue = eventDataValue(CodeGenerator.generateUid(), "658");
existingPsi.setEventDataValues(Set.of(existingDataValue));
DataElement dataElement = new DataElement();
dataElement.setUid(CodeGenerator.generateUid());
when(preheat.get(DataElement.class, dataElement.getUid())).thenReturn(dataElement);
// event refers to a different dataElement then currently associated
// with the event in the DB; thus both
// dataValues will be merged
DataValue newDataValue = dataValue(dataElement.getUid(), "900");
Event event = event(existingPsi.getUid(), newDataValue);
when(preheat.getEvent(TrackerIdScheme.UID, existingPsi.getUid())).thenReturn(existingPsi);
ProgramStageInstance programStageInstance = converter.fromForRuleEngine(preheat, event);
assertEquals(2, programStageInstance.getEventDataValues().size());
EventDataValue expect1 = new EventDataValue();
expect1.setDataElement(existingDataValue.getDataElement());
expect1.setValue(existingDataValue.getValue());
EventDataValue expect2 = new EventDataValue();
expect2.setDataElement(newDataValue.getDataElement());
expect2.setValue(newDataValue.getValue());
assertContainsOnly(programStageInstance.getEventDataValues(), expect1, expect2);
}
use of org.hisp.dhis.tracker.domain.Event in project dhis2-core by dhis2.
the class EventDataValuesValidationHook method validateMandatoryDataValues.
private void validateMandatoryDataValues(Event event, TrackerImportValidationContext context, ValidationErrorReporter reporter) {
if (StringUtils.isNotEmpty(event.getProgramStage())) {
ProgramStage programStage = context.getProgramStage(event.getProgramStage());
final List<String> mandatoryDataElements = programStage.getProgramStageDataElements().stream().filter(ProgramStageDataElement::isCompulsory).map(de -> context.getIdentifiers().getDataElementIdScheme().getIdentifier(de.getDataElement())).collect(Collectors.toList());
List<String> missingDataValue = validateMandatoryDataValue(programStage, event, mandatoryDataElements);
missingDataValue.forEach(de -> reporter.addError(event, E1303, de));
}
}
use of org.hisp.dhis.tracker.domain.Event in project dhis2-core by dhis2.
the class EventRuleValidationHook method validateEvent.
@Override
public void validateEvent(ValidationErrorReporter reporter, Event event) {
TrackerImportValidationContext context = reporter.getValidationContext();
List<ProgramRuleIssue> programRuleIssues = validators.stream().flatMap(v -> v.validateEvents(context.getBundle()).getOrDefault(event.getEvent(), Lists.newArrayList()).stream()).collect(Collectors.toList());
addIssuesToReporter(reporter, event, programRuleIssues);
}
use of org.hisp.dhis.tracker.domain.Event in project dhis2-core by dhis2.
the class EventCategoryOptValidationHookTest method setUp.
@BeforeEach
public void setUp() {
initServices();
hook = new EventCategoryOptValidationHook(i18nManager);
catOption = createCategoryOption('A');
category = createCategory('A', catOption);
catCombo = createCategoryCombo('A', category);
attOptionCombo = createCategoryOptionCombo(catCombo, catOption);
defaultCatCombo = new CategoryCombo();
defaultCatCombo.setName(DEFAULT_CATEGORY_COMBO_NAME);
defaultCatOption = new CategoryOption();
defaultCatOption.setName(DEFAULT_NAME);
defaultCatOptionCombo = createCategoryOptionCombo(defaultCatCombo, defaultCatOption);
program = createProgram('A');
program.setCategoryCombo(catCombo);
event = new Event();
event.setEvent(CodeGenerator.generateUid());
event.setProgram(program.getUid());
event.setOccurredAt(EVENT_INSTANT);
User user = createUser('A');
TrackerBundle bundle = TrackerBundle.builder().user(user).build();
when(validationContext.getBundle()).thenReturn(bundle);
when(validationContext.getProgram(program.getUid())).thenReturn(program);
reporter = new ValidationErrorReporter(validationContext);
}
use of org.hisp.dhis.tracker.domain.Event in project dhis2-core by dhis2.
the class PreCheckSecurityOwnershipValidationHookTest method verifyValidationSuccessForEventUsingUpdateStrategyAndUserWithAuthority.
@Test
void verifyValidationSuccessForEventUsingUpdateStrategyAndUserWithAuthority() {
String enrollmentUid = CodeGenerator.generateUid();
Event event = Event.builder().enrollment(enrollmentUid).orgUnit(ORG_UNIT_ID).programStage(PS_ID).program(PROGRAM_ID).build();
when(ctx.getStrategy(event)).thenReturn(TrackerImportStrategy.UPDATE);
when(ctx.getProgramStage(event.getProgramStage())).thenReturn(programStage);
ProgramInstance programInstance = getEnrollment(enrollmentUid);
ProgramStageInstance programStageInstance = getEvent();
programStageInstance.setProgramInstance(programInstance);
when(ctx.getProgramStageInstance(event.getEvent())).thenReturn(programStageInstance);
when(ctx.getProgramInstance(event.getEnrollment())).thenReturn(programInstance);
when(ctx.getProgram(PROGRAM_ID)).thenReturn(program);
when(ctx.getOrganisationUnit(ORG_UNIT_ID)).thenReturn(organisationUnit);
when(aclService.canDataRead(user, program.getTrackedEntityType())).thenReturn(true);
when(aclService.canDataRead(user, program)).thenReturn(true);
when(aclService.canDataWrite(user, programStage)).thenReturn(true);
when(organisationUnitService.isInUserHierarchyCached(user, organisationUnit)).thenReturn(true);
bundle.setUser(changeCompletedEventAuthorisedUser());
reporter = new ValidationErrorReporter(ctx);
validatorToTest.validateEvent(reporter, event);
assertFalse(reporter.hasErrors());
}
Aggregations