diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/AddRedactionRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/AddRedactionRequest.java index fe3f247f6..f08fb5d35 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/AddRedactionRequest.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/AddRedactionRequest.java @@ -29,4 +29,6 @@ public class AddRedactionRequest { private List positions = new ArrayList<>(); private String comment; + + //TODO: forceAddToDictionary flag? } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/TypeResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/TypeResource.java new file mode 100644 index 000000000..29875e9dd --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/TypeResource.java @@ -0,0 +1,27 @@ +package com.iqser.red.service.persistence.service.v1.api.resources; + +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Type; + +public interface TypeResource { + + String TYPE_PATH = "/type"; + + @ResponseBody + @ResponseStatus(value = HttpStatus.OK) + @GetMapping(value = TYPE_PATH, produces = MediaType.APPLICATION_JSON_VALUE) + List getTypes(); + + @ResponseBody + @ResponseStatus(value = HttpStatus.OK) + @GetMapping(value = TYPE_PATH, produces = MediaType.APPLICATION_JSON_VALUE) + Type getType(String typeId); + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/TypeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/TypeClient.java new file mode 100644 index 000000000..7e0037525 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/TypeClient.java @@ -0,0 +1,9 @@ +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.resources.TypeResource; + +@FeignClient(name = "TypeClient", url = "http://localhost:${server.port}") +public interface TypeClient extends TypeResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java new file mode 100644 index 000000000..afe68a17a --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java @@ -0,0 +1,27 @@ +package com.iqser.red.service.peristence.v1.server.integration.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.peristence.v1.server.integration.client.TypeClient; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Type; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; + +@Service +public class TypeProvider { + + @Autowired + private TypeClient typeClient; + + public Type testAndProvideType(DossierTemplate dossierTemplate) { + + var type = typeClient.getType(dossierTemplate.getDossierTypes().stream().filter(t -> t.getType()).findFirst().get()); + + + + return type; + } + + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index b94f6c74e..5e050f755 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -1,14 +1,23 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.AddRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.model.CommentRequest; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import static org.assertj.core.api.Assertions.assertThat; +import com.iqser.red.service.persistence.service.v1.api.model.ForceRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.model.ImageRecategorizationRequest; +import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; +import com.iqser.red.service.persistence.service.v1.api.model.LegalBasisChangeRequest; +import com.iqser.red.service.persistence.service.v1.api.model.RemoveRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { @@ -18,6 +27,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { @Autowired private DossierTesterAndProvider dossierTesterAndProvider; + @Autowired + private TypeProvider typeProvider; @Autowired private ManualRedactionClient manualRedactionClient; @@ -29,9 +40,33 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var file = fileTesterAndProvider.testAndProvideFile(dossier); + var type = typeProvider.testAndProvideType(dossier.getDossierTemplate()); + var comment = manualRedactionClient.addComment(dossier.getId(), file.getId(), "1", CommentRequest.builder().text("test").user("1").build()); var loadedComment = manualRedactionClient.getComment(comment.getId()); assertThat(loadedComment.getText()).isEqualTo("test"); + var addRedaction = manualRedactionClient.addAddRedaction(dossier.getId(), file.getId(), AddRedactionRequest.builder().addToDictionary(true).addToDossierDictionary(false).status(AnnotationStatus.REQUESTED).type("manual").user("user").reason("1").value("1").legalBasis("1").build()); + var loadedAddRedaction = manualRedactionClient.getAddRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedAddRedaction.getUser()).isEqualTo("user"); + assertThat(loadedAddRedaction.getTypeId()).isEqualTo("manual"); + + var removeRedaction = manualRedactionClient.addRemoveRedaction(dossier.getId(), file.getId(), RemoveRedactionRequest.builder().annotationId(addRedaction.getAnnotationId()).comment("commi").removeFromDictionary(false).build()); + manualRedactionClient.updateRemoveRedactionStatus(dossier.getId(), file.getId(), removeRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED)); + var loadedRemoveRedaction = manualRedactionClient.getRemoveRedaction(file.getId(), removeRedaction.getAnnotationId()); + assertThat(loadedRemoveRedaction.isRemoveFromDictionary()).isEqualTo(false); + assertThat(loadedRemoveRedaction.getSoftDeletedTime()).isNotEqualTo(null); + + var forceRedaction = manualRedactionClient.addForceRedaction(dossier.getId(), file.getId(), ForceRedactionRequest.builder().annotationId(addRedaction.getAnnotationId()).comment("commi").legalBasis("1").build()); + var loadedForceRedaction = manualRedactionClient.getForceRedaction(file.getId(), forceRedaction.getAnnotationId()); + assertThat(loadedForceRedaction.getLegalBasis()).isEqualTo("1"); + + var legalBasisChange = manualRedactionClient.addLegalBasisChange(dossier.getId(), file.getId(), new LegalBasisChangeRequest()); //TODO: fill + var loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedLegalBasisChange.getId()).isEqualTo(legalBasisChange.getAnnotationId()); + + var imageRecategorization = manualRedactionClient.addImageRecategorization(dossier.getId(), file.getId(), ImageRecategorizationRequest.builder().build());//TODO: fill + + } }