RED-9588 - No "You have been unassigned..." Notification after setting file status to back to new
- update the condition for sending unassigned notification - unit test added
This commit is contained in:
parent
c2ed01b540
commit
419fa4628b
@ -369,8 +369,10 @@ public class StatusController implements StatusResource {
|
||||
|
||||
private void generatePossibleUnassignedFromFileNotification(String dossierId, String fileId, FileModel oldFileStatus, String newAssigneeId) {
|
||||
|
||||
if (oldFileStatus.getAssignee() == null || newAssigneeId == null || oldFileStatus.getAssignee().equals(newAssigneeId) || KeycloakSecurity.getUserId()
|
||||
.equals(oldFileStatus.getAssignee())) {
|
||||
if (oldFileStatus.getAssignee() == null
|
||||
|| newAssigneeId == null && oldFileStatus.getAssignee() == null
|
||||
|| oldFileStatus.getAssignee().equals(newAssigneeId)
|
||||
|| KeycloakSecurity.getUserId().equals(oldFileStatus.getAssignee())) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.anyString;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
@ -25,8 +27,12 @@ import java.util.Set;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
|
||||
@ -40,6 +46,8 @@ import com.iqser.red.service.peristence.v1.server.integration.client.FileAttribu
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.NotificationClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.NotificationPreferencesClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient;
|
||||
@ -58,7 +66,9 @@ import com.iqser.red.service.persistence.management.v1.processor.service.job.Del
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.job.DocumentDataFilesConversionJob;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.job.SoftDeletedFilesCleanupJob;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributesConfig;
|
||||
@ -72,6 +82,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryState;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationComments;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig;
|
||||
@ -86,6 +97,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.Forc
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.LegalBasisChangeRequestModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RecategorizationRequestModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RemoveRedactionRequestModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.data.redaction.DocumentPageProto;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.data.redaction.DocumentPositionDataProto;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.data.redaction.DocumentStructureProto;
|
||||
@ -160,6 +172,10 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@Autowired
|
||||
private DocumentDataFilesConversionJob documentDataFilesConversionJob;
|
||||
@MockBean
|
||||
private NotificationPersistenceService notificationPersistenceService;
|
||||
@Captor
|
||||
private ArgumentCaptor<AddNotificationRequest> captor;
|
||||
|
||||
|
||||
@Test
|
||||
@ -464,10 +480,18 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
manualRedactionClient.removeRedactionBulk(dossierId,
|
||||
fileId,
|
||||
Set.of(RemoveRedactionRequestModel.builder().annotationId(annotationId).comment("removeComment").removeFromDictionary(false).build()));
|
||||
Set.of(RemoveRedactionRequestModel.builder()
|
||||
.annotationId(annotationId)
|
||||
.comment("removeComment")
|
||||
.removeFromDictionary(false)
|
||||
.build()));
|
||||
manualRedactionClient.forceRedactionBulk(dossierId,
|
||||
fileId,
|
||||
Set.of(ForceRedactionRequestModel.builder().annotationId("forceRedactionAnnotation").comment("forceComment").legalBasis("1").build()));
|
||||
Set.of(ForceRedactionRequestModel.builder()
|
||||
.annotationId("forceRedactionAnnotation")
|
||||
.comment("forceComment")
|
||||
.legalBasis("1")
|
||||
.build()));
|
||||
manualRedactionClient.legalBasisChangeBulk(dossierId,
|
||||
fileId,
|
||||
Set.of(LegalBasisChangeRequestModel.builder()
|
||||
@ -1187,4 +1211,43 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
DocumentPositionDataProto.AllDocumentPositionData allDocumentPositionData = DocumentPositionDataProto.AllDocumentPositionData.parseFrom(documentPositionBytes);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testUserNotificationsWhenUnAssigned() { //RED-9588
|
||||
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
var file2 = fileTesterAndProvider.testAndProvideFile(dossier, "file2");
|
||||
|
||||
var currentUserId = userProvider.getUserId();
|
||||
var user1 = userProvider.getAltUserId();
|
||||
var user2 = userProvider.getMemberUserId();
|
||||
assertThat(currentUserId).isNotEqualTo(user1);
|
||||
assertThat(currentUserId).isNotEqualTo(user2);
|
||||
assertThat(user1).isNotEqualTo(user2);
|
||||
|
||||
DossierRequest cru = new DossierRequest();
|
||||
cru.setDossierTemplateId(dossierTemplate.getId());
|
||||
BeanUtils.copyProperties(dossier, cru);
|
||||
cru.getMemberIds().add(user1);
|
||||
cru.getMemberIds().add(user2);
|
||||
dossierClient.createDossierOrUpdateDossier(cru);
|
||||
|
||||
fileClient.setStatusUnderReviewForList(dossier.getId(), List.of(file.getId(), file2.getId()), user1);
|
||||
var fileStatus1 = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertEquals(WorkflowStatus.UNDER_REVIEW, fileStatus1.getWorkflowStatus());
|
||||
assertEquals(user1, fileStatus1.getAssignee());
|
||||
|
||||
fileClient.setStatusNewForList(dossier.getId(), List.of(file.getId(), file2.getId()));
|
||||
fileStatus1 = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertEquals(WorkflowStatus.NEW, fileStatus1.getWorkflowStatus());
|
||||
assertNull(fileStatus1.getAssignee());
|
||||
|
||||
verify(notificationPersistenceService, times(5)).insertNotification(captor.capture());
|
||||
|
||||
Assertions.assertEquals(captor.getValue().getUserId(), user1);
|
||||
Assertions.assertEquals(captor.getValue().getNotificationType(), NotificationType.UNASSIGNED_FROM_FILE.name());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user