diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 5114273f5..94fa05f0c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -156,7 +156,7 @@ public class DossierTemplateCloneService { private void cloneComponents(String dossierTemplate, String clonedDossierTemplateId) { - List componentDefinitionEntities = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplate); + List componentDefinitionEntities = componentDefinitionPersistenceService.findByDossierTemplateIdAndNotSoftDeleted(dossierTemplate); for (ComponentDefinitionEntity componentDefinitionEntity : componentDefinitionEntities) { ComponentDefinitionAddRequest componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder() diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java index 258102685..e048be0ea 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java @@ -11,6 +11,7 @@ import java.util.List; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateExternalClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; @@ -19,6 +20,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemp import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinition; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionAddRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionUpdateRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest; import feign.FeignException; @@ -33,6 +35,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe @Autowired private ComponentDefinitionPersistenceService componentDefinitionPersistenceService; + @Autowired + private DossierTemplateClient dossierTemplateClient; + @Test public void testCreateComponentDefinition() { @@ -294,4 +299,50 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe assertEquals(newOrder.get(2).getRank(), 3); } + @Test + public void testSoftDeleteComponentDefinitionAndReOrder() { //RED-10628 + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + var componentDefinitionAddRequest1 = ComponentDefinitionAddRequest.builder().technicalName("Component 1").displayName("Component 1").description("Description").build(); + var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder().technicalName("Component 2").displayName("Component 2").description("Description").build(); + var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder().technicalName("Component 3").displayName("Component 3").description("Description").build(); + var componentDefinitionAddRequest4 = ComponentDefinitionAddRequest.builder().technicalName("Component 4").displayName("Component 4").description("Description").build(); + var componentDefinitionAddRequest5 = ComponentDefinitionAddRequest.builder().technicalName("Component 5").displayName("Component 5").description("Description").build(); + var componentDefinitionAddRequest6 = ComponentDefinitionAddRequest.builder().technicalName("Component 6").displayName("Component 6").description("Description").build(); + var componentDefinitionAddRequest7 = ComponentDefinitionAddRequest.builder().technicalName("Component 7").displayName("Component 7").description("Description").build(); + + var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), + List.of(componentDefinitionAddRequest1, componentDefinitionAddRequest2, componentDefinitionAddRequest3, + componentDefinitionAddRequest4, componentDefinitionAddRequest5, componentDefinitionAddRequest6, componentDefinitionAddRequest7)); + assertEquals(response.size(), 7); + + // delete first component + dossierTemplateExternalClient.deleteComponents(dossierTemplate.getId(), List.of(response.get(0).getId())); + var softDeletedComponent = dossierTemplateExternalClient.getComponent(dossierTemplate.getId(), response.get(0).getId()); + assertNotNull(softDeletedComponent.getSoftDeleteTime()); + + var response1 = dossierTemplateExternalClient.getComponents(dossierTemplate.getId(), false); + assertEquals(response1.size(), 6); + + String firstComponentId = response1.get(0).getId(); + String secondComponentId = response1.get(1).getId(); + String thirdComponentId = response1.get(2).getId(); + + var newOrder = dossierTemplateExternalClient.reorderComponents(dossierTemplate.getId(), List.of(secondComponentId)); + assertEquals(newOrder.size(), 6); + assertEquals(newOrder.get(0).getId(), secondComponentId); + assertEquals(newOrder.get(0).getRank(), 1); + assertEquals(newOrder.get(1).getId(), firstComponentId); + assertEquals(newOrder.get(1).getRank(), 2); + assertEquals(newOrder.get(2).getId(), thirdComponentId); + assertEquals(newOrder.get(2).getRank(), 3); + + // clone dossier template + CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder().name("Clone of " + dossierTemplate.getName()).cloningUserId("user").build(); + var clonedDT = dossierTemplateClient.cloneDossierTemplate(dossierTemplate.getId(), cdtr); + assertEquals(clonedDT.getName(), "Clone of " + dossierTemplate.getName()); + var response2 = dossierTemplateExternalClient.getComponents(clonedDT.getId(), false); + assertEquals(response2.size(), 6); + } + }