RED-2604 Extended DossierTest and Bugfix for saving/updating dossiers with ReportTemplates
This commit is contained in:
parent
91828d6f98
commit
8b1c2eb558
@ -17,6 +17,7 @@ import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
|
||||
@ -56,8 +57,10 @@ public class DossierPersistenceService {
|
||||
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier);
|
||||
dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId()));
|
||||
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
|
||||
dossier.getReportTemplates().forEach(t -> t.getDossiers().removeIf(d -> d.getId().equals(dossierId) && !createOrUpdateDossierRequest.getReportTemplateIds().contains(t.getTemplateId())));
|
||||
var reportTemplates = reportTemplateRepository.findAllById(createOrUpdateDossierRequest.getReportTemplateIds());
|
||||
reportTemplates.forEach(r -> r.getDossiers().add(dossier));
|
||||
reportTemplates.forEach(r -> {if (!r.getDossiers().stream().map(DossierEntity::getId).collect(Collectors.toSet()).contains(dossierId)) {r.getDossiers().add(dossier);}});
|
||||
dossier.setReportTemplates(reportTemplates);
|
||||
});
|
||||
|
||||
|
||||
@ -3,15 +3,21 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplate;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
|
||||
|
||||
import feign.FeignException;
|
||||
|
||||
@ -23,6 +29,9 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private DossierClient dossierClient;
|
||||
|
||||
@Autowired
|
||||
private ReportTemplateClient reportTemplateClient;
|
||||
|
||||
@Test
|
||||
public void testDossier() {
|
||||
|
||||
@ -66,4 +75,140 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
assertThatThrownBy(() -> dossierClient.undeleteDossiers(Sets.newHashSet(dossier.getId()))).isInstanceOf(FeignException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDossierWithReportTemplates() {
|
||||
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
String dossierName = "Dossier 1 Update";
|
||||
|
||||
var allDossiers = dossierClient.getAllDossiers();
|
||||
assertThat(allDossiers.size()).isEqualTo(1);
|
||||
assertThat(allDossiers.get(0)).isEqualTo(dossier);
|
||||
|
||||
List<ReportTemplate> availableTemplates = provideTestReportTemplates(dossier);
|
||||
|
||||
// 1. update dossier: Add 3 report templates, but only on exists
|
||||
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
|
||||
cru.setDossierTemplateId(dossier.getId());
|
||||
BeanUtils.copyProperties(dossier, cru);
|
||||
cru.setDossierName(dossierName);
|
||||
cru.setWatermarkPreviewEnabled(true);
|
||||
cru.setReportTemplateIds(List.of(availableTemplates.get(0).getTemplateId(), "id-does-not-exist-1", "id-does-not-exist-2"));
|
||||
|
||||
var updated = dossierClient.updateDossier(cru, dossier.getId());
|
||||
assertThat(updated.getDossierName()).isEqualTo(dossierName);
|
||||
assertThat(updated.isWatermarkPreviewEnabled()).isEqualTo(true);
|
||||
assertThat(updated.getReportTemplateIds().size()).isEqualTo(1);
|
||||
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId());
|
||||
|
||||
var loadedTemplate = dossierClient.getDossierById(dossier.getId(),false);
|
||||
|
||||
assertThat(loadedTemplate).isEqualTo(updated);
|
||||
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(1);
|
||||
assertThat(loadedTemplate.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId());
|
||||
|
||||
allDossiers = dossierClient.getAllDossiers();
|
||||
assertThat(allDossiers.size()).isEqualTo(1);
|
||||
assertThat(allDossiers.get(0).getReportTemplateIds().size()).isEqualTo(1);
|
||||
|
||||
// 2. update dossier: Add 2 report templates, but one is already added
|
||||
cru = new CreateOrUpdateDossierRequest();
|
||||
cru.setDossierTemplateId(dossier.getId());
|
||||
BeanUtils.copyProperties(dossier, cru);
|
||||
cru.setDossierName(dossierName);
|
||||
cru.setWatermarkPreviewEnabled(true);
|
||||
cru.setReportTemplateIds(List.of(availableTemplates.get(0).getTemplateId(), availableTemplates.get(1).getTemplateId()));
|
||||
|
||||
updated = dossierClient.updateDossier(cru, dossier.getId());
|
||||
assertThat(updated.getDossierName()).isEqualTo(dossierName);
|
||||
assertThat(updated.isWatermarkPreviewEnabled()).isEqualTo(true);
|
||||
assertThat(updated.getReportTemplateIds().size()).isEqualTo(2);
|
||||
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId(), availableTemplates.get(1).getTemplateId());
|
||||
|
||||
loadedTemplate = dossierClient.getDossierById(dossier.getId(),false);
|
||||
|
||||
assertThat(loadedTemplate).isEqualTo(updated);
|
||||
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(2);
|
||||
assertThat(loadedTemplate.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId(), availableTemplates.get(1).getTemplateId());
|
||||
|
||||
// 3. update dossier: Add 2 report templates, but one is already added. One has to be removed
|
||||
cru = new CreateOrUpdateDossierRequest();
|
||||
cru.setDossierTemplateId(dossier.getId());
|
||||
BeanUtils.copyProperties(dossier, cru);
|
||||
cru.setDossierName(dossierName);
|
||||
cru.setWatermarkPreviewEnabled(true);
|
||||
cru.setReportTemplateIds(List.of(availableTemplates.get(1).getTemplateId(), availableTemplates.get(2).getTemplateId()));
|
||||
|
||||
updated = dossierClient.updateDossier(cru, dossier.getId());
|
||||
assertThat(updated.getDossierName()).isEqualTo(dossierName);
|
||||
assertThat(updated.isWatermarkPreviewEnabled()).isEqualTo(true);
|
||||
assertThat(updated.getReportTemplateIds().size()).isEqualTo(2);
|
||||
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(1).getTemplateId(), availableTemplates.get(2).getTemplateId());
|
||||
|
||||
loadedTemplate = dossierClient.getDossierById(dossier.getId(),false);
|
||||
|
||||
assertThat(loadedTemplate).isEqualTo(updated);
|
||||
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(2);
|
||||
assertThat(loadedTemplate.getReportTemplateIds()).contains(availableTemplates.get(1).getTemplateId(), availableTemplates.get(2).getTemplateId());
|
||||
|
||||
// 4. update dossier: Add 1 report templates. The others have to be removed
|
||||
cru = new CreateOrUpdateDossierRequest();
|
||||
cru.setDossierTemplateId(dossier.getId());
|
||||
BeanUtils.copyProperties(dossier, cru);
|
||||
cru.setDossierName(dossierName);
|
||||
cru.setWatermarkPreviewEnabled(true);
|
||||
cru.setReportTemplateIds(List.of(availableTemplates.get(0).getTemplateId()));
|
||||
|
||||
updated = dossierClient.updateDossier(cru, dossier.getId());
|
||||
assertThat(updated.getDossierName()).isEqualTo(dossierName);
|
||||
assertThat(updated.isWatermarkPreviewEnabled()).isEqualTo(true);
|
||||
assertThat(updated.getReportTemplateIds().size()).isEqualTo(1);
|
||||
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId());
|
||||
|
||||
loadedTemplate = dossierClient.getDossierById(dossier.getId(),false);
|
||||
|
||||
assertThat(loadedTemplate).isEqualTo(updated);
|
||||
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(1);
|
||||
assertThat(loadedTemplate.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId());
|
||||
|
||||
|
||||
// Remove dossier
|
||||
dossierClient.getAllDossiers().forEach(ld -> dossierClient.delete(ld.getId()));
|
||||
dossierClient.hardDeleteDossiers(Sets.newHashSet(dossier.getId()));
|
||||
assertThat(dossierClient.getAllDossiers()).isEmpty();
|
||||
assertThat(dossierClient.getSoftDeletedDossiers()).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
private List<ReportTemplate> provideTestReportTemplates(Dossier dossier) {
|
||||
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.activeByDefault(true)
|
||||
.dossierTemplateId(dossier.getDossierTemplateId())
|
||||
.multiFileReport(false)
|
||||
.fileName("reportTemplate123")
|
||||
.template(new byte[]{1, 2, 3, 4})
|
||||
.build());
|
||||
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.activeByDefault(true)
|
||||
.dossierTemplateId(dossier.getDossierTemplateId())
|
||||
.multiFileReport(false)
|
||||
.fileName("reportTemplate456")
|
||||
.template(new byte[]{1, 2, 3, 4})
|
||||
.build());
|
||||
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.activeByDefault(true)
|
||||
.dossierTemplateId(dossier.getDossierTemplateId())
|
||||
.multiFileReport(false)
|
||||
.fileName("reportTemplate789")
|
||||
.template(new byte[]{1, 2, 3, 4})
|
||||
.build());
|
||||
|
||||
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossier.getDossierTemplateId());
|
||||
assertThat(availableTemplates.size()).isEqualTo(3);
|
||||
return availableTemplates;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user