RED-7049 - Wrong error code when adding entity with already existing rank - backport

- reworked the junit test and renamed it

Signed-off-by: Corina Olariu <corina.olariu.ext@knecon.com>
This commit is contained in:
Corina Olariu 2024-03-11 15:02:47 +02:00
parent f8645ef50c
commit 9eb0e5e8df
2 changed files with 171 additions and 88 deletions

View File

@ -0,0 +1,171 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService;
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateImportService;
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
import com.iqser.red.service.persistence.management.v1.processor.service.export.DossierTemplateExportService;
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.DossierStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ExportDownloadRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.TypeRankSummary;
import com.iqser.red.storage.commons.service.StorageService;
import lombok.SneakyThrows;
//@DirtiesContext
@ExtendWith(SpringExtension.class)
public class DossierTemplateCloneAndExportWithDuplicateRanksTest {
@MockBean
private DossierTemplateRepository dossierTemplateRepository;
@MockBean
private LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
@MockBean
private RulesPersistenceService rulesPersistenceService;
// private DossierTemplatePersistenceService dossierTemplatePersistenceService;
@MockBean
private DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
@MockBean
private DictionaryPersistenceService dictionaryPersistenceService;
@MockBean
private EntryPersistenceService entryPersistenceService;
@MockBean
private FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
@MockBean
private ReportTemplatePersistenceService reportTemplatePersistenceService;
@MockBean
private ColorsService colorsService;
@MockBean
private StorageService storageService;
@MockBean
private DossierStatusPersistenceService dossierStatusPersistenceService;
@MockBean
private WatermarkService watermarkService;
@MockBean
private FileManagementStorageService fileManagementStorageService;
@MockBean
private DownloadStatusPersistenceService downloadStatusPersistenceService;
@MockBean
private RabbitTemplate rabbitTemplate;
@MockBean
private TypeRepository typeRepository;
@MockBean
private DossierTemplateImportService dossierTemplateImportService;
private DossierTemplatePersistenceService dossierTemplatePersistenceService;
private DossierTemplateCloneService dossierTemplateCloneService;
private DossierTemplateExportService dossierTemplateExportService;
private DossierTemplateManagementService dossierTemplateManagementService;
private String dossierTemplateId = "dossierTemplateId";
private String dossierTemplateName = "Clone of " + dossierTemplateId;
@BeforeEach
public void setupData() {
dossierTemplatePersistenceService = new DossierTemplatePersistenceService(dossierTemplateRepository,
legalBasisMappingPersistenceService,
rulesPersistenceService,
dictionaryPersistenceService,
typeRepository);
dossierTemplateCloneService = new DossierTemplateCloneService(dossierTemplateRepository,
legalBasisMappingPersistenceService,
rulesPersistenceService,
dossierTemplatePersistenceService,
dossierAttributeConfigPersistenceService,
dictionaryPersistenceService,
entryPersistenceService,
fileAttributeConfigPersistenceService,
reportTemplatePersistenceService,
colorsService,
storageService,
dossierStatusPersistenceService,
watermarkService,
fileManagementStorageService);
dossierTemplateExportService = new DossierTemplateExportService(dossierTemplatePersistenceService,
downloadStatusPersistenceService,
dossierAttributeConfigPersistenceService,
dossierStatusPersistenceService,
dictionaryPersistenceService,
fileAttributeConfigPersistenceService,
legalBasisMappingPersistenceService,
rulesPersistenceService,
fileManagementStorageService,
reportTemplatePersistenceService,
colorsService,
entryPersistenceService,
watermarkService,
rabbitTemplate);
dossierTemplateManagementService = new DossierTemplateManagementService(dossierTemplateExportService,
dossierTemplateImportService,
dossierTemplatePersistenceService,
dossierTemplateCloneService);
List<TypeRankSummary> typesValues = new ArrayList<>();
TypeRankSummary typeRank1 = new TypeRankSummary(dossierTemplateId, null, 50, 2);
TypeRankSummary typeRank2 = new TypeRankSummary(dossierTemplateId, null, 100, 1);
typesValues.add(typeRank1);
typesValues.add(typeRank2);
when(dictionaryPersistenceService.getTypeRankSummaryList(dossierTemplateId)).thenReturn(typesValues);
}
@Test
@SneakyThrows
public void testDownloadWithDuplicateRanks() {
// test the export of dossier template
ExportDownloadRequest exportDownloadRequest = new ExportDownloadRequest("userId", dossierTemplateId);
Assertions.assertThrows(BadRequestException.class, () -> dossierTemplateManagementService.prepareExportDownload(exportDownloadRequest));
}
@Test
@SneakyThrows
public void testCloneDossierTemplateWithDuplicateRanks() {
CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder().name(dossierTemplateName).cloningUserId("user").ocrByDefault(true).removeWatermark(false).build();
DossierTemplateEntity dossierTemplateEntity = new DossierTemplateEntity();
dossierTemplateEntity.setId(dossierTemplateId);
when(dossierTemplateRepository.existsByName(cdtr.getName())).thenReturn(false);
when(dossierTemplateRepository.findById(dossierTemplateId)).thenReturn(Optional.of(dossierTemplateEntity));
Assertions.assertThrows(BadRequestException.class, () -> dossierTemplateManagementService.cloneDossierTemplate(dossierTemplateId, cdtr));
}
}

View File

@ -1,88 +0,0 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
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.DossierTemplateClient;
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.service.persistence.DictionaryPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.TypeRankSummary;
import feign.FeignException;
import lombok.SneakyThrows;
public class DossierTemplateWithDuplicateRanksTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Autowired
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
@Autowired
private DossierTemplateClient dossierTemplateClient;
@MockBean
private DictionaryPersistenceService dictionaryPersistenceService;
private DossierTemplateModel dossierTemplate;
private Dossier dossier;
@BeforeEach
public void setupData() {
dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
List<TypeRankSummary> typesValues = new ArrayList<>();
TypeRankSummary typeRank1 = new TypeRankSummary(dossierTemplate.getId(), dossier.getId(), 50, 2);
TypeRankSummary typeRank2 = new TypeRankSummary(dossierTemplate.getId(), dossier.getId(), 100, 1);
typesValues.add(typeRank1);
typesValues.add(typeRank2);
when(dictionaryPersistenceService.getTypeRankSummaryList(dossierTemplate.getId())).thenReturn(typesValues);
}
@Test
public void testDownloadWithDuplicateRanks() {
// test the export of dossier template
Assertions.assertThrows(FeignException.BadRequest.class, () -> dossierTemplateClient.prepareExportDownload(dossierTemplate.getId()));
}
@Test
@SneakyThrows
public void testCloneDossierTemplateWithDuplicateRanks() {
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
assertThat(allTemplates.size()).isEqualTo(1);
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder()
.name("Clone of " + dossierTemplate.getName())
.cloningUserId("user")
.ocrByDefault(true)
.removeWatermark(false)
.build();
Assertions.assertThrows(FeignException.BadRequest.class, () -> dossierTemplateClient.cloneDossierTemplate(dossierTemplate.getId(), cdtr));
}
}