RED-2661 Removing a dossier member or deleting a user must not change the status of a file
- renamed currentReviewer to assignee, "Unassigned" status into "NEW" - added lastApprover - modified logic for setCurrentAssignee, setUnderReview, setUnderApproval and setApproved - integration tests updated
This commit is contained in:
parent
37ea0c3f2c
commit
104f44b06f
@ -30,8 +30,9 @@ public class FileModel {
|
||||
private OffsetDateTime lastProcessed;
|
||||
private OffsetDateTime lastIndexed;
|
||||
private int numberOfAnalyses;
|
||||
private String currentReviewer;
|
||||
private String assignee;
|
||||
private String lastReviewer;
|
||||
private String lastApprover;
|
||||
private OffsetDateTime lastManualRedaction;
|
||||
private boolean hasRedactions;
|
||||
private boolean hasHints;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file;
|
||||
|
||||
public enum WorkflowStatus {
|
||||
UNASSIGNED, UNDER_REVIEW, UNDER_APPROVAL, APPROVED
|
||||
NEW, UNDER_REVIEW, UNDER_APPROVAL, APPROVED
|
||||
}
|
||||
|
||||
@ -25,7 +25,8 @@ public interface StatusResource {
|
||||
String EXCLUDED_STATUS_PARAM = "excluded";
|
||||
|
||||
String APPROVER_ID_REQUEST_PARAM = "approverId";
|
||||
String REVIEWER_ID_REQUEST_PARAM = "reviewerId";
|
||||
String ASSIGNEE_ID_REQUEST_PARAM = "assigneeId";
|
||||
String USER_ID_REQUEST_PARAM = "userId";
|
||||
|
||||
|
||||
@ResponseBody
|
||||
@ -55,20 +56,20 @@ public interface StatusResource {
|
||||
FileModel getFileStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId);
|
||||
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/reviewer" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void setCurrentFileReviewer(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required =false) String reviewerId);
|
||||
@PostMapping(value = STATUS_PATH + "/assignee" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void setCurrentFileAssignee(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = ASSIGNEE_ID_REQUEST_PARAM, required =false) String assigneeId);
|
||||
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/underreview" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE)
|
||||
void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId);
|
||||
void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = USER_ID_REQUEST_PARAM, required = false) String userId);
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/underapproval" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE)
|
||||
void setStatusUnderApproval(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId);
|
||||
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/approved" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE)
|
||||
void setStatusApproved(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId);
|
||||
void setStatusApproved(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId);
|
||||
|
||||
@PostMapping(value = STATUS_PATH + "/toggle-analysis" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE)
|
||||
void toggleExclusion(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(EXCLUDED_STATUS_PARAM) boolean excluded);
|
||||
|
||||
@ -60,11 +60,14 @@ public class FileEntity {
|
||||
private int numberOfAnalyses;
|
||||
|
||||
@Column
|
||||
private String currentReviewer;
|
||||
private String assignee;
|
||||
|
||||
@Column
|
||||
private String lastReviewer;
|
||||
|
||||
@Column
|
||||
private String lastApprover;
|
||||
|
||||
@Column
|
||||
private OffsetDateTime lastManualRedaction;
|
||||
|
||||
|
||||
@ -41,7 +41,7 @@ public class FileStatusPersistenceService {
|
||||
file.setDossier(dossierRepository.getOne(dossierId));
|
||||
file.setFilename(filename);
|
||||
file.setProcessingStatus(ProcessingStatus.UNPROCESSED);
|
||||
file.setWorkflowStatus(WorkflowStatus.UNASSIGNED);
|
||||
file.setWorkflowStatus(WorkflowStatus.NEW);
|
||||
file.setNumberOfPages(0);
|
||||
file.setAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setUploader(uploader);
|
||||
@ -254,14 +254,13 @@ public class FileStatusPersistenceService {
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setCurrentReviewer(String fileId, String currentReviewer, String lastReviewer) {
|
||||
public void setAssignee(String fileId, String currentReviewer, String lastReviewer, String lastApprover) {
|
||||
|
||||
if (isFileDeleted(fileId)) {
|
||||
return;
|
||||
}
|
||||
int updateCount = fileRepository.setCurrentReviewer(fileId, currentReviewer, lastReviewer,
|
||||
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
|
||||
currentReviewer == null ? WorkflowStatus.UNASSIGNED : WorkflowStatus.UNDER_REVIEW);
|
||||
int updateCount = fileRepository.setAssignee(fileId, currentReviewer, lastReviewer, lastApprover,
|
||||
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
if (updateCount == 0) {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
}
|
||||
@ -288,7 +287,7 @@ public class FileStatusPersistenceService {
|
||||
});
|
||||
|
||||
int countUpdate = fileRepository.overwriteFile(fileId, filename, uploader, ProcessingStatus.FULLREPROCESS,
|
||||
WorkflowStatus.UNASSIGNED,
|
||||
WorkflowStatus.NEW,
|
||||
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
|
||||
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
if (countUpdate == 0) {
|
||||
|
||||
@ -97,10 +97,9 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
|
||||
OffsetDateTime hardDeletedTime, OffsetDateTime deleted);
|
||||
|
||||
@Modifying
|
||||
@Query("update FileEntity f set f.currentReviewer = :currentReviewer, f.lastReviewer = :lastReviewer," +
|
||||
"f.lastUpdated = :lastUpdated, f.workflowStatus = :workflowStatus where f.id = :fileId")
|
||||
int setCurrentReviewer(String fileId, String currentReviewer, String lastReviewer, OffsetDateTime lastUpdated,
|
||||
WorkflowStatus workflowStatus);
|
||||
@Query("update FileEntity f set f.assignee = :assignee, f.lastReviewer = :lastReviewer, f.lastApprover = :lastApprover, " +
|
||||
"f.lastUpdated = :lastUpdated where f.id = :fileId")
|
||||
int setAssignee(String fileId, String assignee, String lastReviewer, String lastApprover, OffsetDateTime lastUpdated);
|
||||
|
||||
@Modifying(clearAutomatically = true)
|
||||
@Query("update FileEntity f set f.excluded = :excluded, f.lastUpdated = :lastUpdated where f.id = :fileId")
|
||||
@ -109,8 +108,8 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
|
||||
@Modifying
|
||||
@Query("update FileEntity f set f.filename = :filename, f.uploader = :uploader, f.processingStatus = :processingStatus, " +
|
||||
"f.workflowStatus = :workflowStatus, f.lastUploaded = :lastUploaded, f.lastUpdated = :lastUpdated, " +
|
||||
"f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, " +
|
||||
"f.currentReviewer = null, f.approvalDate = null, f.lastManualRedaction = null, " +
|
||||
"f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, f.lastApprover = null, " +
|
||||
"f.assignee = null, f.approvalDate = null, f.lastManualRedaction = null, " +
|
||||
"f.dictionaryVersion = 0, f.dossierDictionaryVersion = 0, f.rulesVersion = 0, f.hasImages = false, " +
|
||||
"f.hasHints = false, f.hasRedactions = false, f.hasSuggestions = false, f.hasUpdates = false, " +
|
||||
"f.deleted = null, f.hardDeletedTime = null " +
|
||||
|
||||
@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller;
|
||||
import com.iqser.red.service.peristence.v1.server.service.*;
|
||||
import com.iqser.red.service.peristence.v1.server.utils.FileModelMapper;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
|
||||
@ -77,42 +78,58 @@ public class FileStatusController implements StatusResource {
|
||||
|
||||
|
||||
@Override
|
||||
public void setCurrentFileReviewer(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
public void setCurrentFileAssignee(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required = false) String reviewerId) {
|
||||
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, reviewerId);
|
||||
fileStatusService.setStatusSuccessful(fileId, reviewerId != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.UNASSIGNED);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
@RequestParam(value = ASSIGNEE_ID_REQUEST_PARAM, required = false) String assigneeId) {
|
||||
fileStatusService.setAssignee(dossierId, fileId, assigneeId);
|
||||
}
|
||||
|
||||
|
||||
public void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId) {
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = USER_ID_REQUEST_PARAM, required = false) String userId) {
|
||||
|
||||
|
||||
FileEntity fileStatus = fileStatusService.getStatus(fileId);
|
||||
String lastReviewer = fileStatus.getLastReviewer();
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, lastReviewer);
|
||||
fileStatusService.setStatusSuccessful(fileId, lastReviewer != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.UNASSIGNED);
|
||||
String assignee = fileStatus.getAssignee();
|
||||
if (userId != null) {
|
||||
assignee = userId;
|
||||
fileStatusService.setAssignee(dossierId, fileId, assignee);
|
||||
}
|
||||
fileStatusService.setStatusSuccessful(fileId, assignee != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.NEW);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
|
||||
public void setStatusUnderApproval(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId) {
|
||||
|
||||
fileStatusService.setCurrentReviewer(dossierId, fileId, approverId);
|
||||
fileStatusService.setStatusSuccessful(fileId, approverId != null ? WorkflowStatus.UNDER_APPROVAL : WorkflowStatus.UNASSIGNED);
|
||||
FileEntity fileStatus = fileStatusService.getStatus(fileId);
|
||||
String assignee = fileStatus.getAssignee();
|
||||
if (approverId != null) {
|
||||
assignee = approverId;
|
||||
|
||||
}
|
||||
fileStatusService.setAssignee(dossierId, fileId, approverId);
|
||||
fileStatusService.setStatusSuccessful(fileId, assignee != null ? WorkflowStatus.UNDER_APPROVAL : WorkflowStatus.NEW);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
|
||||
public void setStatusApproved(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId) {
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId) {
|
||||
|
||||
FileEntity fileStatus = fileStatusService.getStatus(fileId);
|
||||
String assignee = fileStatus.getAssignee();
|
||||
if (assignee == null && approverId == null) {
|
||||
throw new BadRequestException("No user assigned for the approval");
|
||||
}
|
||||
if (approverId != null) {
|
||||
assignee = approverId;
|
||||
}
|
||||
fileStatusService.setAssignee(dossierId, fileId, assignee);
|
||||
fileStatusService.setApprovalStatusSuccessful(fileId, WorkflowStatus.APPROVED);
|
||||
|
||||
}
|
||||
|
||||
public void toggleExclusion(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
|
||||
@ -33,7 +33,7 @@ public class AnalysisFlagsCalculationService {
|
||||
var file = fileStatusPersistenceService.getStatus(fileId);
|
||||
var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true);
|
||||
|
||||
var viewedPagesForCurrentReviewer = viewedPagesPersistenceService.findViewedPages(fileId, file.getCurrentReviewer());
|
||||
var viewedPagesForCurrentReviewer = viewedPagesPersistenceService.findViewedPages(fileId, file.getAssignee());
|
||||
|
||||
Map<Integer, OffsetDateTime> viewedPages = viewedPagesForCurrentReviewer.stream().collect(Collectors.toMap(ViewedPageEntity::getPage, ViewedPageEntity::getViewedTime));
|
||||
|
||||
|
||||
@ -60,8 +60,8 @@ public class FileService {
|
||||
throw new ConflictException("File already exists in status APPROVED");
|
||||
}
|
||||
|
||||
if (existingStatus.getCurrentReviewer() != null && !request.getUploader()
|
||||
.equalsIgnoreCase(existingStatus.getCurrentReviewer())) {
|
||||
if (existingStatus.getAssignee() != null && !request.getUploader()
|
||||
.equalsIgnoreCase(existingStatus.getAssignee())) {
|
||||
throw new ConflictException("Only the reviewer can overwrite a file");
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.UserNotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||
@ -195,17 +194,24 @@ public class FileStatusService {
|
||||
}
|
||||
|
||||
|
||||
public void setCurrentReviewer(String dossierId, String fileId, String currentReviewer) {
|
||||
public void setAssignee(String dossierId, String fileId, String currentReviewer) {
|
||||
|
||||
if (StringUtils.isNotEmpty(currentReviewer) && !dossierPersistenceService.getAndValidateDossier(dossierId)
|
||||
.getMemberIds()
|
||||
.contains(currentReviewer)) {
|
||||
throw new UserNotFoundException("User=" + currentReviewer + " must be member or owner of dossier=" + dossierId);
|
||||
}
|
||||
|
||||
FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId);
|
||||
String lastReviewer = fileStatus.getLastReviewer();
|
||||
String lastApprover = fileStatus.getLastApprover();
|
||||
if(WorkflowStatus.UNDER_REVIEW.equals(fileStatus.getWorkflowStatus())) {
|
||||
lastReviewer = currentReviewer;
|
||||
}
|
||||
if(WorkflowStatus.UNDER_APPROVAL.equals(fileStatus.getWorkflowStatus())) {
|
||||
lastApprover = currentReviewer;
|
||||
}
|
||||
|
||||
fileStatusPersistenceService.setCurrentReviewer(fileId, currentReviewer, fileStatus.getCurrentReviewer());
|
||||
fileStatusPersistenceService.setAssignee(fileId, currentReviewer, lastReviewer, lastApprover);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ public class ReanalysisRequiredStatusService {
|
||||
if (ProcessingStatus.PROCESSED.equals(fileStatus.getProcessingStatus()) || ProcessingStatus.UNPROCESSED.equals(fileStatus.getProcessingStatus())) {
|
||||
|
||||
switch (fileStatus.getWorkflowStatus()) {
|
||||
case UNASSIGNED:
|
||||
case NEW:
|
||||
case UNDER_REVIEW:
|
||||
case UNDER_APPROVAL:
|
||||
if (fileStatus.getLastProcessed() == null) {
|
||||
|
||||
@ -114,7 +114,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(dossierStats.isHasSuggestionsFilePresent()).isFalse();
|
||||
assertThat(dossierStats.isHasUpdatesFilePresent()).isFalse();
|
||||
assertThat(dossierStats.isHasNoFlagsFilePresent()).isTrue();
|
||||
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.UNASSIGNED)).isEqualTo(1);
|
||||
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.NEW)).isEqualTo(1);
|
||||
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.APPROVED)).isEqualTo(1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
.dossierId(dossier.getId())
|
||||
.build());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED);
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW);
|
||||
assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100);
|
||||
|
||||
fileProcessingClient.ocrFailed(dossier.getId(), file.getId());
|
||||
@ -75,7 +75,7 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
fileProcessingClient.indexingSuccessful(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED);
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW);
|
||||
assertThat(loadedFile.getLastIndexed()).isNotNull();
|
||||
|
||||
}
|
||||
@ -100,7 +100,7 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
.dossierId(dossier.getId())
|
||||
.build());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED);
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW);
|
||||
assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100);
|
||||
|
||||
// Delete file
|
||||
|
||||
@ -5,7 +5,10 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
@ -52,6 +55,9 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private ManualRedactionClient manualRedactionClient;
|
||||
|
||||
@Autowired
|
||||
private DossierClient dossierClient;
|
||||
|
||||
@Test
|
||||
public void testEmptyFile() {
|
||||
|
||||
@ -97,6 +103,11 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
public void testFile() {
|
||||
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
// update
|
||||
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
|
||||
BeanUtils.copyProperties(dossier, cru);
|
||||
cru.getMemberIds().add("2");
|
||||
var updated = dossierClient.updateDossier(cru, dossier.getId());
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
@ -104,10 +115,12 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
|
||||
|
||||
fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), "1");
|
||||
fileClient.setCurrentFileAssignee(dossier.getId(), file.getId(), "1");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getCurrentReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("1");
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW);
|
||||
assertThat(loadedFile.getLastReviewer()).isNull();
|
||||
assertThat(loadedFile.getLastApprover()).isNull();
|
||||
|
||||
|
||||
fileClient.excludePages(dossier.getId(), file.getId(), Sets.newHashSet(1));
|
||||
@ -120,30 +133,58 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedFile.getExcludedPages()).isEmpty();
|
||||
|
||||
|
||||
fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), "1");
|
||||
fileClient.setCurrentFileAssignee(dossier.getId(), file.getId(), "1");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getCurrentReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("1");
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW);
|
||||
assertThat(loadedFile.getLastReviewer()).isNull();
|
||||
assertThat(loadedFile.getLastApprover()).isNull();
|
||||
|
||||
|
||||
fileClient.setStatusUnderReview(dossier.getId(), file.getId(), null);
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("1");
|
||||
assertThat(loadedFile.getLastReviewer()).isNull();
|
||||
assertThat(loadedFile.getLastApprover()).isNull();
|
||||
|
||||
fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "1");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_APPROVAL);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("1");
|
||||
assertThat(loadedFile.getLastReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getLastApprover()).isNull();
|
||||
|
||||
|
||||
fileClient.setStatusUnderReview(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW);
|
||||
|
||||
|
||||
fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "1");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_APPROVAL);
|
||||
|
||||
|
||||
fileClient.setStatusApproved(dossier.getId(), file.getId());
|
||||
fileClient.setStatusApproved(dossier.getId(), file.getId(), null);
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("1");
|
||||
assertThat(loadedFile.getLastReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getLastApprover()).isEqualTo("1");
|
||||
|
||||
|
||||
fileClient.setStatusUnderReview(dossier.getId(), file.getId(), "2");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("2");
|
||||
assertThat(loadedFile.getLastReviewer()).isEqualTo("1");
|
||||
assertThat(loadedFile.getLastApprover()).isEqualTo("1");
|
||||
|
||||
|
||||
fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "2");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_APPROVAL);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("2");
|
||||
assertThat(loadedFile.getLastReviewer()).isEqualTo("2");
|
||||
assertThat(loadedFile.getLastApprover()).isEqualTo("1");
|
||||
|
||||
|
||||
fileClient.setStatusApproved(dossier.getId(), file.getId(), "2");
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED);
|
||||
assertThat(loadedFile.getAssignee()).isEqualTo("2");
|
||||
assertThat(loadedFile.getLastReviewer()).isEqualTo("2");
|
||||
assertThat(loadedFile.getLastApprover()).isEqualTo("2");
|
||||
|
||||
|
||||
assertThat(uploadClient.getOriginal(dossier.getId(), file.getId())).isNotNull();
|
||||
@ -153,7 +194,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(uploadClient.getAnnotated(dossier.getId(), file.getId())).isNotNull();
|
||||
|
||||
|
||||
fileClient.setStatusUnderReview(dossier.getId(), file.getId());
|
||||
fileClient.setStatusUnderReview(dossier.getId(), file.getId(), null);
|
||||
|
||||
|
||||
fileClient.toggleExclusion(dossier.getId(), file.getId(), true);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user