RED-9140 - Correctly distinct between ChangeType REMOVED and IGNORED during EntityLog merge

This commit is contained in:
Andrei Isvoran 2024-07-23 11:48:46 +02:00
parent 2f35d2b218
commit 0c4ebbd6b9
2 changed files with 66 additions and 6 deletions

View File

@ -387,19 +387,22 @@ public class EntityLogMergeService {
public void mergeIdToRemove(IdRemoval idRemoval, EntityLogEntry entityLogEntry, int analysisNumber) {
List<Change> changes = new ArrayList<>();
changes.add(ChangeFactory.toChange(ChangeType.REMOVED,
OffsetDateTime.now(),
analysisNumber,
PropertyChange.builder().property("state").oldValue(entityLogEntry.getState().name()).newValue(EntryState.IGNORED.name()).build()));
addChanges(entityLogEntry, changes);
Change change = ChangeFactory.toChange(ChangeType.IGNORED,
OffsetDateTime.now(),
analysisNumber,
PropertyChange.builder().property("state").oldValue(entityLogEntry.getState().name()).newValue(EntryState.IGNORED.name()).build());
entityLogEntry.setState(EntryState.IGNORED);
//special case, only for add local and remove only
if (!entityLogEntry.getEngines().isEmpty() && Set.of(Engine.MANUAL).containsAll(entityLogEntry.getEngines())) {
entityLogEntry.setState(EntryState.REMOVED);
change.setType(ChangeType.REMOVED);
}
entityLogEntry.getEngines().add(Engine.MANUAL);
entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(idRemoval, 0));
changes.add(change);
addChanges(entityLogEntry, changes);
}

View File

@ -172,7 +172,7 @@ public class EntityLogMergeTest {
assertEquals(removeEntryLogEntry.getManualChanges()
.get(0).getManualRedactionType(), ManualRedactionType.REMOVE);
assertEquals(removeEntryLogEntry.getChanges()
.get(0).getType(), ChangeType.REMOVED);
.get(0).getType(), ChangeType.IGNORED);
assertTrue(removeEntryLogEntry.getEngines().contains(Engine.MANUAL));
var optionalResizeEntryLogEntry = response.getEntityLogEntry()
@ -672,6 +672,63 @@ public class EntityLogMergeTest {
}
@Test
public void testIgnoreType() {
String dossierId = "dossierId";
String dossierTemplateId = "dossierTemplateId";
String entryId = UUID.randomUUID().toString();
ManualRedactions manualRedactions = ManualRedactions.builder()
.idsToRemove(Set.of(IdRemoval.builder()
.annotationId(entryId)
.fileId("file")
.requestDate(OffsetDateTime.now())
.user("user")
.build()))
.build();
var entityLog = new EntityLog(1,
1,
Lists.newArrayList(EntityLogEntry.builder()
.id(entryId)
.type("CBI_author")
.value("value")
.entryType(EntryType.ENTITY)
.state(EntryState.APPLIED)
.dictionaryEntry(true)
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.build()),
Collections.emptyList(),
0,
0,
0,
0);
when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions);
when(fileStatusService.getStatus(FILE_ID)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(FILE_ID).build());
when(fileManagementStorageService.getEntityLog(dossierId, FILE_ID)).thenReturn(entityLog);
when(dossierService.getDossierById(dossierId)).thenReturn(DossierEntity.builder().dossierTemplateId(dossierTemplateId).build());
when(dictionaryPersistenceService.getType(anyString())).thenReturn(TypeEntity.builder().isHint(false).build());
when(fileStatusPersistenceService.getStatus(FILE_ID)).thenReturn(FileEntity.builder().id(FILE_ID).fileAttributes(Collections.emptyList()).build());
when(fileStatusService.convertAttributes(any(), anyString())).thenReturn(Collections.emptyList());
EntityLog response = entityLogMergeService.mergeEntityLog(manualRedactions, entityLog, DossierEntity.builder().dossierTemplateId(dossierTemplateId).build());
assertNotNull(response);
assertFalse(response.getEntityLogEntry().isEmpty());
var optionalEntityLogEntry = response.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getId().equals(entryId))
.findFirst();
assertTrue(optionalEntityLogEntry.isPresent());
assertEquals(optionalEntityLogEntry.get().getChanges().size(), 1);
assertEquals(optionalEntityLogEntry.get().getChanges().get(0).getType(), ChangeType.IGNORED);
}
private EntityLog provideEntityLog(String entryToRemoveId,
String entryToResizeId,
String entryLegalBasisId,