RED-2604 Extended DossierTest and Bugfix for saving/updating dossiers with ReportTemplates

This commit is contained in:
Philipp Schramm 2021-11-11 16:15:44 +01:00
parent 91828d6f98
commit 8b1c2eb558
2 changed files with 149 additions and 1 deletions

View File

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

View File

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