RED-3246: As an admin I want to clone a dossier template
This commit is contained in:
parent
816a28bc11
commit
ba37f0eed1
@ -1,7 +1,11 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@ -11,13 +15,25 @@ import javax.transaction.Transactional;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@ -30,10 +46,18 @@ public class DossierTemplatePersistenceService {
|
||||
private final DossierTemplateRepository dossierTemplateRepository;
|
||||
private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
|
||||
private final RulesPersistenceService rulesPersistenceService;
|
||||
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
|
||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
private final WatermarkService watermarkService;
|
||||
private final ColorsService colorsService;
|
||||
private final StorageService storageService;
|
||||
|
||||
|
||||
@Transactional
|
||||
public DossierTemplateEntity createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest createOrUpdateDossierRequest) {
|
||||
|
||||
if (createOrUpdateDossierRequest.getDossierTemplateId() != null) {
|
||||
Optional<DossierTemplateEntity> dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierRequest.getDossierTemplateId());
|
||||
if (dossierTemplate.isPresent()) {
|
||||
@ -70,6 +94,7 @@ public class DossierTemplatePersistenceService {
|
||||
|
||||
|
||||
private DossierTemplateStatus computeDossierTemplateStatus(DossierTemplateEntity dossierTemplate) {
|
||||
|
||||
var legalBasis = legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplate.getId());
|
||||
if (legalBasis == null || legalBasis.isEmpty()) {
|
||||
return DossierTemplateStatus.INCOMPLETE;
|
||||
@ -91,6 +116,7 @@ public class DossierTemplatePersistenceService {
|
||||
|
||||
|
||||
public void validateDossierTemplateNameIsUnique(String templateName) {
|
||||
|
||||
getAllDossierTemplates().forEach(existing -> {
|
||||
if (existing.getName().equals(templateName)) {
|
||||
throw new ConflictException("DossierTemplate name must be unique");
|
||||
@ -98,6 +124,7 @@ public class DossierTemplatePersistenceService {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public List<DossierTemplateEntity> getAllDossierTemplates() {
|
||||
|
||||
var allDossierTemplates = dossierTemplateRepository.findAllWhereDeletedIsFalse();
|
||||
@ -106,15 +133,20 @@ public class DossierTemplatePersistenceService {
|
||||
return allDossierTemplates;
|
||||
}
|
||||
|
||||
|
||||
public DossierTemplateEntity getDossierTemplate(String dossierTemplateId) {
|
||||
var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId)));
|
||||
|
||||
var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId)
|
||||
.orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId)));
|
||||
dossierTemplate.setDossierTemplateStatus(computeDossierTemplateStatus(dossierTemplate));
|
||||
|
||||
return dossierTemplate;
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void deleteDossierTemplate(String dossierTemplateId, String deletingUserId) {
|
||||
|
||||
dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
|
||||
|
||||
var hasNonDeletedDossiers = dossierTemplate.getDossiers().stream().anyMatch(template -> template.getHardDeletedTime() == null);
|
||||
@ -139,18 +171,117 @@ public class DossierTemplatePersistenceService {
|
||||
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
|
||||
|
||||
dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
|
||||
BeanUtils.copyProperties(dossierTemplate, clonedDossierTemplate);
|
||||
|
||||
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
|
||||
clonedDossierTemplate.setId(UUID.randomUUID().toString());
|
||||
clonedDossierTemplate.setName(nameOfClonedDossierTemplate);
|
||||
clonedDossierTemplate.setCreatedBy(cloningUserId);
|
||||
clonedDossierTemplate.setModifiedBy(cloningUserId);
|
||||
clonedDossierTemplate.setDescription(dossierTemplate.getDescription());
|
||||
clonedDossierTemplate.setDateAdded(now);
|
||||
clonedDossierTemplate.setDateModified(now);
|
||||
clonedDossierTemplate.setCreatedBy(cloningUserId);
|
||||
clonedDossierTemplate.setModifiedBy(cloningUserId);
|
||||
clonedDossierTemplate.setValidFrom(dossierTemplate.getValidFrom());
|
||||
clonedDossierTemplate.setValidTo(dossierTemplate.getValidTo());
|
||||
clonedDossierTemplate.setSoftDeleteTime(dossierTemplate.getSoftDeleteTime());
|
||||
clonedDossierTemplate.setDownloadFileTypes(dossierTemplate.getDownloadFileTypes());
|
||||
|
||||
//set rules
|
||||
rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplate.getId()).getValue(), clonedDossierTemplate.getId());
|
||||
//set legal basis
|
||||
legalBasisMappingPersistenceService.setLegalBasisMapping(clonedDossierTemplate.getId(), convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplate.getId()), LegalBasis.class));
|
||||
|
||||
clonedDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(computeDossierTemplateStatus(clonedDossierTemplate).name()));
|
||||
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
//set dictionaries
|
||||
List<TypeEntity> clonedTypes = new ArrayList<>();
|
||||
var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplate.getId());
|
||||
for (TypeEntity t : types) {
|
||||
TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplate.getId(), t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null);
|
||||
te.setDossierTemplateId(clonedDossierTemplate.getId());
|
||||
clonedTypes.add(te);
|
||||
}
|
||||
clonedDossierTemplate.setDossierTypes(clonedTypes);
|
||||
|
||||
//set dossier attributes
|
||||
var dossierAttributesConfig = dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplate.getId());
|
||||
List<DossierAttributeConfigEntity> dacList = new ArrayList<>();
|
||||
dossierAttributesConfig.forEach(dossierAttributeConfigEntity -> {
|
||||
var dac = DossierAttributeConfigEntity.builder()
|
||||
.label(dossierAttributeConfigEntity.getLabel())
|
||||
.editable(dossierAttributeConfigEntity.isEditable())
|
||||
.placeholder(dossierAttributeConfigEntity.getPlaceholder())
|
||||
.type(dossierAttributeConfigEntity.getType())
|
||||
.build();
|
||||
dacList.add(dac);
|
||||
});
|
||||
dossierAttributeConfigPersistenceService.setDossierAttributesConfig(clonedDossierTemplate.getId(), dacList);
|
||||
|
||||
//set file attributes
|
||||
var fileAttributesGeneralConfig = fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplate.getId());
|
||||
var fagc = FileAttributesGeneralConfigurationEntity.builder()
|
||||
.dossierTemplateId(clonedDossierTemplate.getId())
|
||||
.delimiter(fileAttributesGeneralConfig.getDelimiter())
|
||||
.filenameMappingColumnHeaderName(fileAttributesGeneralConfig.getFilenameMappingColumnHeaderName())
|
||||
.build();
|
||||
fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(clonedDossierTemplate.getId(), fagc);
|
||||
|
||||
var fileAttributesConfig = fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplate.getId());
|
||||
List<FileAttributeConfigEntity> facList = new ArrayList<>();
|
||||
fileAttributesConfig.forEach(fileAttributeConfigEntity -> {
|
||||
var fac = FileAttributeConfigEntity.builder()
|
||||
.csvColumnHeader(fileAttributeConfigEntity.getCsvColumnHeader())
|
||||
.label(fileAttributeConfigEntity.getLabel())
|
||||
.primaryAttribute(fileAttributeConfigEntity.isPrimaryAttribute())
|
||||
.editable(fileAttributeConfigEntity.isEditable())
|
||||
.filterable(fileAttributeConfigEntity.isFilterable())
|
||||
.displayedInFileList(fileAttributeConfigEntity.isDisplayedInFileList())
|
||||
.placeholder(fileAttributeConfigEntity.getPlaceholder())
|
||||
.type(fileAttributeConfigEntity.getType())
|
||||
.build();
|
||||
facList.add(fac);
|
||||
});
|
||||
fileAttributeConfigPersistenceService.setFileAttributesConfig(clonedDossierTemplate.getId(), facList);
|
||||
clonedDossierTemplate.setFileAttributeConfigs(fileAttributeConfigPersistenceService.getFileAttributes(clonedDossierTemplate.getId()));
|
||||
|
||||
//set report templates
|
||||
var reportTemplates = dossierTemplate.getReportTemplates();
|
||||
for (ReportTemplateEntity rte : reportTemplates) {
|
||||
var storedReportTemplate = storageService.getObject(rte.getStorageId());
|
||||
String storageId = clonedDossierTemplate.getId() + "/" + rte.getFileName();
|
||||
String templateId = UUID.randomUUID().toString();
|
||||
try {
|
||||
storageService.storeObject(storageId, storedReportTemplate.getInputStream());
|
||||
} catch (IOException e) {
|
||||
throw new ConflictException("Could not clone dossier template.");
|
||||
}
|
||||
reportTemplatePersistenceService.insert(clonedDossierTemplate.getId(), templateId, storageId, rte.getFileName(), rte.isActiveByDefault(), rte.isMultiFileReport());
|
||||
}
|
||||
clonedDossierTemplate.setReportTemplates(reportTemplatePersistenceService.findByDossierTemplateId(clonedDossierTemplate.getId()));
|
||||
|
||||
//set watermarks
|
||||
var watermark = watermarkService.getWatermark(dossierTemplate.getId());
|
||||
WatermarkEntity we = WatermarkEntity.builder()
|
||||
.dossierTemplateId(clonedDossierTemplate.getId())
|
||||
.text(watermark.getText())
|
||||
.hexColor(watermark.getHexColor())
|
||||
.opacity(watermark.getOpacity())
|
||||
.fontType(watermark.getFontType())
|
||||
.fontSize(watermark.getFontSize())
|
||||
.orientation(watermark.getOrientation())
|
||||
.build();
|
||||
watermarkService.saveWatermark(clonedDossierTemplate.getId(), we);
|
||||
|
||||
//set colors
|
||||
var colors = colorsService.getColors(dossierTemplate.getId());
|
||||
var clonedColors = new ColorsEntity();
|
||||
BeanUtils.copyProperties(colors, clonedColors);
|
||||
clonedColors.setDossierTemplateId(clonedDossierTemplate.getId());
|
||||
colorsService.saveColors(clonedColors);
|
||||
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
}, () -> {
|
||||
throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId));
|
||||
});
|
||||
|
||||
@ -1,26 +1,62 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||
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.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
|
||||
import feign.FeignException;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
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 com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||
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.management.v1.processor.entity.configuration.ColorsEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierAttributeConfig;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.FileAttributesGeneralConfiguration;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
|
||||
import feign.FeignException;
|
||||
|
||||
public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@ -36,6 +72,22 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private DossierClient dossierClient;
|
||||
|
||||
@Autowired
|
||||
private DictionaryClient dictionaryClient;
|
||||
|
||||
@Autowired
|
||||
private DossierAttributeConfigClient dossierAttributeConfigClient;
|
||||
|
||||
@Autowired
|
||||
private FileAttributeConfigClient fileAttributeConfigClient;
|
||||
|
||||
@Autowired
|
||||
private ReportTemplateClient reportTemplateClient;
|
||||
|
||||
@Autowired
|
||||
private WatermarkClient watermarkClient;
|
||||
|
||||
|
||||
@Test
|
||||
public void testDossierTemplate() {
|
||||
|
||||
@ -45,7 +97,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(allTemplates.size()).isEqualTo(1);
|
||||
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
|
||||
|
||||
|
||||
// update
|
||||
CreateOrUpdateDossierTemplateRequest cru = new CreateOrUpdateDossierTemplateRequest();
|
||||
cru.setDossierTemplateId(dossierTemplate.getId());
|
||||
@ -55,7 +106,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
var updated = dossierTemplateClient.createOrUpdateDossierTemplate(cru);
|
||||
assertThat(updated.getName()).isEqualTo("Template 1 Update");
|
||||
|
||||
|
||||
var loadedTemplate = dossierTemplateClient.getDossierTemplate(dossierTemplate.getId());
|
||||
|
||||
assertThat(loadedTemplate).isEqualTo(updated);
|
||||
@ -68,9 +118,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
var testDossier = dossierTesterAndProvider.provideTestDossier(updated);
|
||||
|
||||
try{
|
||||
try {
|
||||
dossierTemplateClient.deleteDossierTemplate(updated.getId(), "1");
|
||||
}catch (FeignException e){
|
||||
} catch (FeignException e) {
|
||||
assertThat(e.status()).isEqualTo(400);
|
||||
}
|
||||
|
||||
@ -82,7 +132,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
|
||||
@Test(expected = FeignException.class)
|
||||
public void testDossierTemplateUniqueNameConflict(){
|
||||
public void testDossierTemplateUniqueNameConflict() {
|
||||
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
var dossierTemplate2 = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
}
|
||||
@ -90,8 +141,91 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@Test
|
||||
public void testCloneDossierTemplate() {
|
||||
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
|
||||
Type type = Type.builder()
|
||||
.id("t.id")
|
||||
.type("t.getType()")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.hexColor("#ddddd")
|
||||
.recommendationHexColor("#cccccc")
|
||||
.rank(999)
|
||||
.isHint(false)
|
||||
.isRecommendation(false)
|
||||
.isCaseInsensitive(false)
|
||||
.description("t.getDescription()")
|
||||
.addToDictionaryAction(true)
|
||||
.label("t.getLabel()")
|
||||
.dossierId(null)
|
||||
.version(23)
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.build();
|
||||
dictionaryClient.addType(type);
|
||||
dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.editable(false)
|
||||
.id("dossierAttributeId")
|
||||
.label("labelDossierAttribute")
|
||||
.type(DossierAttributeType.TEXT)
|
||||
.placeholder("placeholderDossier")
|
||||
.build()));
|
||||
fileAttributeConfigClient.setFileAttributesGeneralConfig(dossierTemplate.getId(), FileAttributesGeneralConfiguration.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.delimiter("")
|
||||
.filenameMappingColumnHeaderName("filenameMappingColumnHeaderName")
|
||||
.build());
|
||||
fileAttributeConfigClient.setFileAttributesConfig(dossierTemplate.getId(), List.of(FileAttributeConfig.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.primaryAttribute(true)
|
||||
.csvColumnHeader("12345")
|
||||
.displayedInFileList(false)
|
||||
.editable(false)
|
||||
.filterable(false)
|
||||
.id("fileAttributeId")
|
||||
.label("labelFileAttribute")
|
||||
.type(FileAttributeType.TEXT)
|
||||
.placeholder("placeholderFile")
|
||||
.build()));
|
||||
ReportTemplateEntity rte = ReportTemplateEntity.builder()
|
||||
.templateId("templateId")
|
||||
.dossierTemplate(convert(dossierTemplate, DossierTemplateEntity.class))
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.dossiers(null)
|
||||
.activeByDefault(false)
|
||||
.fileName("rte")
|
||||
.multiFileReport(false)
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.build();
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder().template("some text".getBytes(StandardCharsets.UTF_8)).dossierTemplateId(dossierTemplate.getId()).fileName("Report Template").activeByDefault(true).multiFileReport(false).build());
|
||||
watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.fontSize(10)
|
||||
.fontType("Arial")
|
||||
.text("watermark")
|
||||
.hexColor("#123456")
|
||||
.opacity(1)
|
||||
.orientation(WatermarkOrientation.HORIZONTAL)
|
||||
.build());
|
||||
var col = Colors.builder()
|
||||
.analysisColor("#111111")
|
||||
.defaultColor("#222222")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.dictionaryRequestColor("#333333")
|
||||
.requestAdd("#444444")
|
||||
.ignoredHintColor("#555555")
|
||||
.requestRemove("#666666")
|
||||
.requestRemove("#777777")
|
||||
.notRedacted("#888888")
|
||||
.previewColor("#999999")
|
||||
.updatedColor("#aaaaaa")
|
||||
.manualRedactionColor("#bbbbbb")
|
||||
.build();
|
||||
dictionaryClient.setColors(dossierTemplate.getId(), col);
|
||||
|
||||
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
|
||||
assertThat(allTemplates.size()).isEqualTo(1);
|
||||
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
|
||||
@ -100,7 +234,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName());
|
||||
|
||||
var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId());
|
||||
assertThat(loadedTemplate).isEqualTo(clonedDT);
|
||||
assertThat(loadedTemplate.getId()).isEqualTo(clonedDT.getId());
|
||||
assertThat(loadedTemplate.getDescription()).isEqualTo(dossierTemplate.getDescription());
|
||||
assertThat(loadedTemplate.getValidFrom()).isEqualTo(dossierTemplate.getValidFrom());
|
||||
@ -108,6 +241,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedTemplate.getDownloadFileTypes()).isEqualTo(dossierTemplate.getDownloadFileTypes());
|
||||
assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user");
|
||||
assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user");
|
||||
|
||||
assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel());
|
||||
assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()).get(0).getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader());
|
||||
assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()).getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName());
|
||||
assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName());
|
||||
assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText());
|
||||
assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user