From 3a113207d85f57425a58b40253c312c73147ddb4 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 18 Sep 2024 16:39:10 +0200 Subject: [PATCH] RED-10057: legalBasisMapVersion missing in /status endpoint --- .../impl/controller/VersionsController.java | 6 +- .../client/LegalBasisMappingClient.java | 10 +++ .../integration/tests/VersionsTest.java | 86 +++++++++++++++++++ .../v1/api/shared/model/VersionsResponse.java | 3 + 4 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisMappingClient.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/VersionsTest.java diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java index b89411e5e..95d2cce87 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.VersionsResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; @@ -27,6 +28,7 @@ public class VersionsController implements VersionsResource { private final DictionaryPersistenceService dictionaryPersistenceService; private final RulesPersistenceService rulesPersistenceService; private final AccessControlService accessControlService; + private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; @Override @@ -35,7 +37,9 @@ public class VersionsController implements VersionsResource { var result = new HashMap(); dossierTemplateIds.forEach(rsId -> { - VersionsResponse response = new VersionsResponse(dictionaryPersistenceService.getVersion(rsId), rulesPersistenceService.getVersion(rsId, RuleFileType.ENTITY)); + VersionsResponse response = new VersionsResponse(dictionaryPersistenceService.getVersion(rsId), + rulesPersistenceService.getVersion(rsId, RuleFileType.ENTITY), + legalBasisMappingPersistenceService.getVersion(rsId)); result.put(rsId, response); }); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisMappingClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisMappingClient.java new file mode 100644 index 000000000..e3730ee25 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisMappingClient.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import org.springframework.cloud.openfeign.FeignClient; + +import com.iqser.red.service.persistence.service.v1.api.external.resource.LegalBasisMappingResource; + +@FeignClient(name = "LegalBasisMappingClient", url = "http://localhost:${server.port}") +public interface LegalBasisMappingClient extends LegalBasisMappingResource { + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/VersionsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/VersionsTest.java new file mode 100644 index 000000000..2f2c2942a --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/VersionsTest.java @@ -0,0 +1,86 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.Map; + +import org.apache.http.HttpStatus; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; + +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisMappingClient; +import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; +import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient; +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.shared.model.CreateTypeValue; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.VersionsResponse; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.DroolsValidationResponse; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; + +public class VersionsTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private RulesClient rulesClient; + @Autowired + private VersionClient versionClient; + @Autowired + private DictionaryClient dictionaryClient; + @Autowired + private LegalBasisMappingClient legalBasisMapClient; + + + @Test + public void testVersionsResponse() { + + var dossier = dossierTesterAndProvider.provideTestDossier(); + + Map initialVersionsMap = versionClient.getVersions(List.of(dossier.getDossierTemplateId())); + VersionsResponse initialVersions = initialVersionsMap.get(dossier.getDossierTemplateId()); + + assertThat(initialVersions).isNotNull(); + + long initialDictionaryVersion = initialVersions.getDictionaryVersion(); + long initialRulesVersion = initialVersions.getRulesVersion(); + long initialLegalBasisMapVersion = initialVersions.getLegalBasisMapVersion(); + + var rulesUploadRequest = new RulesUploadRequestModel("lorem ipsum", dossier.getDossierTemplateId(), RuleFileType.ENTITY, false); + ResponseEntity rulesResponse = rulesClient.upload(rulesUploadRequest); + assertThat(rulesResponse.getStatusCode().value()).isEqualTo(HttpStatus.SC_OK); + + dictionaryClient.addType(CreateTypeValue.builder() + .type("type_dossier") + .label("Dossier Redactions") + .hexColor("#fcba03") + .rank(100) + .description("Something") + .addToDictionaryAction(false) + .dossierTemplateId(dossier.getDossierTemplateId()) + .build()); + + LegalBasis legalBasis = new LegalBasis(); + legalBasis.setName("Test Legal Basis"); + legalBasis.setDescription("This is a test legal basis."); + legalBasis.setReason("Test Reason"); + legalBasis.setTechnicalName("test_legal_basis"); + + legalBasisMapClient.addOrUpdateLegalBasis(dossier.getDossierTemplateId(), legalBasis); + + Map updatedVersionsMap = versionClient.getVersions(List.of(dossier.getDossierTemplateId())); + VersionsResponse updatedVersions = updatedVersionsMap.get(dossier.getDossierTemplateId()); + + assertThat(updatedVersions.getRulesVersion()).isEqualTo(initialRulesVersion + 1); + assertThat(updatedVersions.getDictionaryVersion()).isEqualTo(initialDictionaryVersion + 1); + assertThat(updatedVersions.getLegalBasisMapVersion()).isEqualTo(initialLegalBasisMapVersion + 1); + } + +} + diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/VersionsResponse.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/VersionsResponse.java index fe2695847..aa8c5093f 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/VersionsResponse.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/VersionsResponse.java @@ -13,4 +13,7 @@ public class VersionsResponse { @Schema(description = "The current rules version.") long rulesVersion; + @Schema(description = "The current legal basis mapping version.") + long legalBasisMapVersion; + }