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:
devplant 2021-11-19 13:01:32 +02:00
parent 37ea0c3f2c
commit 104f44b06f
14 changed files with 134 additions and 67 deletions

View File

@ -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;

View File

@ -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
}

View File

@ -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);

View File

@ -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;

View File

@ -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) {

View File

@ -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 " +

View File

@ -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,

View File

@ -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));

View File

@ -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");
}
}

View 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);
}

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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

View 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);