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
01ab05b52e
commit
bb5e7f5be7
@ -397,8 +397,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;
|
||||
|
||||
@ -58,7 +64,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 +80,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 +95,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 +170,10 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@Autowired
|
||||
private DocumentDataFilesConversionJob documentDataFilesConversionJob;
|
||||
@MockBean
|
||||
private NotificationPersistenceService notificationPersistenceService;
|
||||
@Captor
|
||||
private ArgumentCaptor<AddNotificationRequest> captor;
|
||||
|
||||
|
||||
@Test
|
||||
@ -1187,4 +1201,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