Skip to content

Commit e09c4e5

Browse files
fix: Block update event when block flag on PS [DHIS2-21551](2.42) (#24363)
* fix: Block update event when block flag on PS [DHIS2-21551] * fix: Fix test * fix: Fix test
1 parent 6e0c82e commit e09c4e5

4 files changed

Lines changed: 38 additions & 20 deletions

File tree

dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/validation/validator/event/BlockEntryFormAfterCompletionValidator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ public void validate(Reporter reporter, TrackerBundle bundle, Event event) {
5454

5555
ProgramStage programStage = preheat.getProgramStage(event.getProgramStage());
5656

57-
if (EventStatus.COMPLETED == event.getStatus()
58-
&& Boolean.TRUE.equals(programStage.getBlockEntryForm())) {
57+
if (Boolean.TRUE.equals(programStage.getBlockEntryForm())
58+
&& EventStatus.COMPLETED == event.getStatus()
59+
&& EventStatus.COMPLETED == preheat.getEvent(event.getUid()).getStatus()) {
5960
reporter.addError(event, E1326, event.getEvent());
6061
}
6162
}

dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/tracker/imports/validation/validator/event/BlockEntryFormAfterCompletionValidatorTest.java

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,34 +80,39 @@ void setUp() {
8080
}
8181

8282
@Test
83-
void shouldFailWhenTrackerEventIsCompletedAndBlockEntryFormIsEnabled() {
83+
void shouldFailWhenEventIsCompletedAndSavedStatusIsCompletedAndBlockEntryFormIsEnabled() {
8484
stubProgramStage(true);
85-
Event event = trackerEvent(EventStatus.COMPLETED);
85+
UID uid = UID.generate();
86+
Event event = event(uid, EventStatus.COMPLETED);
87+
stubSavedEvent(uid, EventStatus.COMPLETED);
8688

8789
validator.validate(reporter, bundle, event);
8890

8991
assertHasError(reporter, event, E1326);
9092
}
9193

92-
@Test
93-
void shouldFailWhenSingleEventIsCompletedAndBlockEntryFormIsEnabled() {
94+
@ParameterizedTest
95+
@EnumSource(
96+
value = EventStatus.class,
97+
mode = Mode.EXCLUDE,
98+
names = {"COMPLETED"})
99+
void shouldPassWhenEventIsCompletedButSavedStatusIsNotCompleted(EventStatus savedStatus) {
94100
stubProgramStage(true);
95-
Event event =
96-
Event.builder()
97-
.event(UID.generate())
98-
.programStage(MetadataIdentifier.ofUid(PROGRAM_STAGE_UID))
99-
.status(EventStatus.COMPLETED)
100-
.build();
101+
UID uid = UID.generate();
102+
stubSavedEvent(uid, savedStatus);
103+
Event event = event(uid, EventStatus.COMPLETED);
101104

102105
validator.validate(reporter, bundle, event);
103106

104-
assertHasError(reporter, event, E1326);
107+
assertIsEmpty(reporter.getErrors());
105108
}
106109

107110
@Test
108-
void shouldPassWhenEventIsCompletedButBlockEntryFormIsDisabled() {
111+
void shouldPassWhenEventIsCompletedAndSavedStatusIsCompletedButBlockEntryFormIsDisabled() {
109112
stubProgramStage(false);
110-
Event event = trackerEvent(EventStatus.COMPLETED);
113+
UID uid = UID.generate();
114+
115+
Event event = event(uid, EventStatus.COMPLETED);
111116

112117
validator.validate(reporter, bundle, event);
113118

@@ -121,7 +126,8 @@ void shouldPassWhenEventIsCompletedButBlockEntryFormIsDisabled() {
121126
names = {"COMPLETED"})
122127
void shouldPassWhenBlockEntryFormIsEnabledButEventIsNotCompleted(EventStatus status) {
123128
stubProgramStage(true);
124-
Event event = trackerEvent(status);
129+
UID uid = UID.generate();
130+
Event event = event(uid, status);
125131

126132
validator.validate(reporter, bundle, event);
127133

@@ -144,9 +150,15 @@ private void stubProgramStage(boolean blockEntryForm) {
144150
.thenReturn(programStage);
145151
}
146152

147-
private Event trackerEvent(EventStatus status) {
153+
private void stubSavedEvent(UID uid, EventStatus status) {
154+
org.hisp.dhis.program.Event savedEvent = new org.hisp.dhis.program.Event();
155+
savedEvent.setStatus(status);
156+
when(preheat.getEvent(uid)).thenReturn(savedEvent);
157+
}
158+
159+
private Event event(UID uid, EventStatus status) {
148160
return Event.builder()
149-
.event(UID.generate())
161+
.event(uid)
150162
.programStage(MetadataIdentifier.ofUid(PROGRAM_STAGE_UID))
151163
.status(status)
152164
.build();

dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventImportValidationTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.hisp.dhis.common.CodeGenerator;
5353
import org.hisp.dhis.common.IdentifiableObjectManager;
5454
import org.hisp.dhis.common.UID;
55+
import org.hisp.dhis.event.EventStatus;
5556
import org.hisp.dhis.note.Note;
5657
import org.hisp.dhis.program.Event;
5758
import org.hisp.dhis.test.integration.PostgresIntegrationTestBase;
@@ -261,10 +262,14 @@ void testEventProgramHasNonDefaultCategoryCombo() throws IOException {
261262
void shouldBlockUpdateOfCompletedEventWhenBlockEntryFormIsTrue() throws IOException {
262263
TrackerImportParams params = TrackerImportParams.builder().build();
263264
TrackerObjects trackerObjects =
264-
testSetup.fromJson("tracker/validations/single_completed_event.json");
265+
testSetup.fromJson("tracker/validations/single_active_event.json");
265266
ImportReport importReport = trackerImportService.importTracker(params, trackerObjects);
266267
assertNoErrors(importReport);
267268

269+
trackerObjects.getEvents().get(0).setStatus(EventStatus.COMPLETED);
270+
importReport = trackerImportService.importTracker(params, trackerObjects);
271+
assertNoErrors(importReport);
272+
268273
importReport = trackerImportService.importTracker(params, trackerObjects);
269274
assertHasOnlyErrors(importReport, ValidationCode.E1326);
270275
}

dhis-2/dhis-test-integration/src/test/resources/tracker/validations/single_completed_event.json renamed to dhis-2/dhis-test-integration/src/test/resources/tracker/validations/single_active_event.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"events": [
55
{
66
"event": "ZwwuwNp6gVd",
7-
"status": "COMPLETED",
7+
"status": "ACTIVE",
88
"program": {
99
"idScheme": "UID",
1010
"identifier": "rT3rvcn2vid"

0 commit comments

Comments
 (0)