From cd5fac148957211a568c913c80f2ee2e1d41e5ed Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Sat, 18 Sep 2021 14:26:26 +0200 Subject: [PATCH 1/4] Tests for Manual Redaction --- .../v1/api/model/AddRedactionRequest.java | 2 + .../v1/api/resources/TypeResource.java | 27 ++++++++++++ .../server/integration/client/TypeClient.java | 9 ++++ .../integration/service/TypeProvider.java | 27 ++++++++++++ .../tests/ManualRedactionTest.java | 43 +++++++++++++++++-- 5 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/TypeResource.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/TypeClient.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java 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 + + } } From 906bb1ce47134a8d21e3a1d790862b35c83bfda5 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Sun, 19 Sep 2021 21:26:42 +0300 Subject: [PATCH 2/4] updates --- .../peristence/v1/server/integration/tests/AuditTest.java | 3 +-- .../utils/AbstractPersistenceServerServiceTest.java | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java index da0a3cd50..32df5310c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java @@ -24,7 +24,6 @@ public class AuditTest extends AbstractPersistenceServerServiceTest { @Test public void testAudit() { - assertThat(auditClient.getCategories()).isEmpty(); @@ -37,7 +36,7 @@ public class AuditTest extends AbstractPersistenceServerServiceTest { assertThat(auditClient.getCategories().stream().filter(c -> c.getCategory().equals("c1")).findAny().map(CategoryModel::getRecordCount).get()).isEqualTo(2); assertThat(auditClient.getCategories().stream().filter(c -> c.getCategory().equals("c2")).findAny().map(CategoryModel::getRecordCount).get()).isEqualTo(1); - var result =auditClient.search(AuditSearchRequest.builder().category("c1").page(0).pageSize(10).build()); + var result = auditClient.search(AuditSearchRequest.builder().category("c1").page(0).pageSize(10).build()); assertThat(result.getTotalElements()).isEqualTo(2); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 2c72cb22e..f75e8a4fa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -12,7 +12,6 @@ import com.iqser.red.storage.commons.StorageAutoConfiguration; import com.iqser.red.storage.commons.service.StorageService; import org.junit.After; import org.junit.Before; -import org.junit.ClassRule; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -28,7 +27,6 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.*; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -import org.testcontainers.containers.PostgreSQLContainer; import static org.mockito.Mockito.when; From f36a2c3590a07aec5036bc7723307ee894b9214a Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Sun, 19 Sep 2021 22:51:46 +0300 Subject: [PATCH 3/4] type provider and test --- .../data/configuration/DictionaryEntry.java | 2 + .../v1/api/model/data/configuration/Type.java | 9 ++- .../model/data/dossier/DossierTemplate.java | 3 + .../v1/api/resources/DictionaryResource.java | 19 +++-- .../v1/api/resources/TypeResource.java | 27 ------- .../DictionaryPersistenceService.java | 19 +++-- .../repository/TypeRepository.java | 3 + .../controller/DictionaryController.java | 14 +++- .../integration/client/DictionaryClient.java | 9 +++ .../server/integration/client/TypeClient.java | 9 --- .../integration/service/TypeProvider.java | 43 ++++++++--- .../v1/server/integration/tests/TypeTest.java | 76 +++++++++++++++++++ .../AbstractPersistenceServerServiceTest.java | 28 +++++++ 13 files changed, 196 insertions(+), 65 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/TypeResource.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/TypeClient.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/DictionaryEntry.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/DictionaryEntry.java index 50a352277..16be285e6 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/DictionaryEntry.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/DictionaryEntry.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.configuration; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import javax.persistence.*; @@ -19,6 +20,7 @@ public class DictionaryEntry { @Column private boolean deleted; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) private Type type; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Type.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Type.java index fac967464..0aff516a4 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Type.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Type.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.configuration; +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import lombok.Data; @@ -16,8 +18,7 @@ import static javax.persistence.CascadeType.ALL; public class Type { @Id - private String id; // das ist jetzt UUID - // type + dossierId oder type + templateId + private String id; @Column private String type; @Column @@ -43,12 +44,16 @@ public class Type { private List entries = new ArrayList<>(); @ManyToOne + @JsonIgnore + @JoinColumn(name = "dossier_template_id") private DossierTemplate dossierTemplate; @Column(updatable = false, insertable = false, name = "dossier_template_id") private String dossierTemplateId; @ManyToOne + @JsonIgnore + @JoinColumn(name = "dossier_id") private Dossier dossier; @Column(updatable = false, insertable = false, name = "dossier_id") diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java index c35008344..7f1cc17d6 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Type; import lombok.Data; @@ -53,8 +54,10 @@ public class DossierTemplate { private List reportTemplates = new ArrayList<>(); @OneToMany + @JsonIgnore private List dossierTypes = new ArrayList<>(); @OneToMany + @JsonIgnore private List dossiers = new ArrayList<>(); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java index 5bdc3bb2a..846946b46 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java @@ -1,6 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.resources; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Colors; +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 org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -26,19 +27,20 @@ public interface DictionaryResource { String COLOR_PATH = "/color"; String VERSION_PATH = "/version"; + String ENTRIES_PATH = "/entries"; @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE , consumes = MediaType.APPLICATION_JSON_VALUE) void addEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody List entries, @RequestParam(value = "removeCurrent", required = false, defaultValue = "false") boolean removeCurrent); @ResponseStatus(HttpStatus.NO_CONTENT) - @DeleteMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) + @DeleteMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE , consumes = MediaType.APPLICATION_JSON_VALUE) void deleteEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody List entries); @@ -49,13 +51,13 @@ public interface DictionaryResource { @RequestBody Type typeValue); - @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = TYPE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE) - void addType(@RequestBody Type typeValue); + @ResponseStatus(HttpStatus.CREATED) + @PostMapping(value = TYPE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + Type addType(@RequestBody Type typeValue); @ResponseStatus(HttpStatus.NO_CONTENT) - @DeleteMapping(value = TYPE_PATH + TYPE_PATH_VARIABLE + DOSSIER_TEMPLATE_PATH_VARIABLE) + @DeleteMapping(value = TYPE_PATH + TYPE_PATH_VARIABLE ) void deleteType(@PathVariable(TYPE_PARAMETER_NAME) String typeId); @@ -66,9 +68,12 @@ public interface DictionaryResource { List getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId); - @GetMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE + DOSSIER_TEMPLATE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE , produces = MediaType.APPLICATION_JSON_VALUE) Type getDictionaryForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId); + @GetMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE+ENTRIES_PATH , produces = MediaType.APPLICATION_JSON_VALUE) + List getEntriesForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId); + @GetMapping(value = VERSION_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE) long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); 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 deleted file mode 100644 index 29875e9dd..000000000 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/TypeResource.java +++ /dev/null @@ -1,27 +0,0 @@ -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-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index b94d2f1f8..3bebb407e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -1,12 +1,13 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Type; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; 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.model.data.configuration.Type; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -32,6 +33,8 @@ public class DictionaryPersistenceService { checkRankAlreadyExists(type, dossierTemplateId, rank, dossierId); Type t = new Type(); + t.setId(type + ":" + getTypeIdSuffix(dossierTemplateId, dossierId)); + t.setType(type); t.setDossier(dossierId == null ? null : dossierRepository.getOne(dossierId)); t.setDossierTemplate(dossierTemplateRepository.getOne(dossierTemplateId)); t.setHexColor(hexColor); @@ -42,13 +45,21 @@ public class DictionaryPersistenceService { t.setRecommendation(isRecommendation); t.setAddToDictionaryAction(addToDictionaryAction); t.setLabel(label); + t.setVersion(1); return typeRepository.save(t); } + private String getTypeIdSuffix(String dossierTemplateId, String dossierId) { + if (StringUtils.isBlank(dossierTemplateId) && StringUtils.isBlank(dossierId)) { + throw new BadRequestException("Either DossierId or DossierTemplateId is required"); + } + return dossierTemplateId != null ? dossierTemplateId + (dossierId != null ? ":" + dossierId : "") : dossierId; + } + @Transactional - public void updateType(String typeId, Type typeValueRequest){ + public void updateType(String typeId, Type typeValueRequest) { typeRepository.findById(typeId).ifPresent((type) -> { checkRankAlreadyExists(type.getType(), type.getDossierTemplate().getId(), typeValueRequest.getRank(), type.getDossier() == null ? null : type.getDossier().getId()); @@ -73,9 +84,6 @@ public class DictionaryPersistenceService { } - - - public List getAllTypesForDossierTemplate(String dossierTemplateId) { return typeRepository.findByDossierTemplateId(dossierTemplateId); @@ -107,6 +115,7 @@ public class DictionaryPersistenceService { } } + @Transactional public void incrementVersion(String typeId) { typeRepository.updateByIdSetIncrementVersionByOne(typeId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java index e3372358c..57da87630 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java @@ -4,8 +4,10 @@ import com.iqser.red.service.persistence.service.v1.api.model.data.configuration import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import javax.transaction.Transactional; import java.util.List; import java.util.Optional; @@ -17,6 +19,7 @@ public interface TypeRepository extends JpaRepository { List findByDossierId(String dossierId); + @Modifying @Query("update Type t set t.version = t.version +1 where t.id = :typeId") void updateByIdSetIncrementVersionByOne(String typeId); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java index b1864e30d..5b6344d9e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java @@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.transaction.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -142,7 +143,7 @@ public class DictionaryController implements DictionaryResource { @Override - public void addType(@RequestBody Type typeRequest) { + public Type addType(@RequestBody Type typeRequest) { if (typeRequest.getDossierTemplateId() == null) { throw new BadRequestException("Dossier template id does not exist."); @@ -162,10 +163,9 @@ public class DictionaryController implements DictionaryResource { } String color = typeRequest.getHexColor(); validateColor(color); - var type = dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest + return dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest .getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest .getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId()); - dictionaryPersistenceService.incrementVersion(type.getId()); } @@ -200,10 +200,16 @@ public class DictionaryController implements DictionaryResource { } @Override - public Type getDictionaryForType(String typeId) { + public Type getDictionaryForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) { return dictionaryPersistenceService.getType(typeId); } + @Override + @Transactional + public List getEntriesForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) { + return dictionaryPersistenceService.getType(typeId).getEntries(); + } + private void validateEntries(List entries) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java new file mode 100644 index 000000000..386fd6807 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.DictionaryResource; +import com.iqser.red.service.persistence.service.v1.api.resources.UploadResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "DictionaryClient", url = "http://localhost:${server.port}") +public interface DictionaryClient extends DictionaryResource { +} 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 deleted file mode 100644 index 7e0037525..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/TypeClient.java +++ /dev/null @@ -1,9 +0,0 @@ -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 index afe68a17a..08b34c420 100644 --- 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 @@ -1,26 +1,47 @@ package com.iqser.red.service.peristence.v1.server.integration.service; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +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; 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; +import static org.assertj.core.api.Assertions.assertThat; @Service public class TypeProvider { @Autowired - private TypeClient typeClient; + private DictionaryClient dictionaryClient; + + public Type testAndProvideType(DossierTemplate dossierTemplate, String typeName) { + + var type = new Type(); + type.setType(typeName); + type.setDescription("test"); + type.setAddToDictionaryAction(true); + type.setHexColor("#dddddd"); + type.setHint(false); + type.setRank(100); + type.setRecommendation(false); + type.setLabel("test"); + type.setCaseInsensitive(false); + type.setDossierTemplateId(dossierTemplate.getId()); + + + var createdType = dictionaryClient.addType(type); + + + var loadedType = dictionaryClient.getDictionaryForType(createdType.getId()); + + assertThat(loadedType).isNotNull(); + + + return loadedType; + } public Type testAndProvideType(DossierTemplate dossierTemplate) { - - var type = typeClient.getType(dossierTemplate.getDossierTypes().stream().filter(t -> t.getType()).findFirst().get()); - - - - return type; + return testAndProvideType(dossierTemplate, "test"); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java new file mode 100644 index 000000000..f388fcf2a --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java @@ -0,0 +1,76 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +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.data.configuration.Colors; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DictionaryEntry; +import org.assertj.core.util.Lists; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class TypeTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private TypeProvider typeProvider; + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private DictionaryClient dictionaryClient; + + + @Test + public void testType() { + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var type = typeProvider.testAndProvideType(dossierTemplate); + + dictionaryClient.addEntries(type.getId(), Lists.newArrayList("aaa", "bbb", "ccc"), true); + + var loadedType = dictionaryClient.getDictionaryForType(type.getId()); + + assertThat(loadedType.getVersion()).isGreaterThan(type.getVersion()); + + List dict = dictionaryClient.getEntriesForType(type.getId()); + + assertThat(dict.size()).isEqualTo(3); + + dictionaryClient.deleteEntries(type.getId(), Lists.newArrayList("aaa", "bbb", "ccc")); + + loadedType = dictionaryClient.getDictionaryForType(type.getId()); + + assertThat(loadedType.getVersion()).isGreaterThan(type.getVersion() + 1); + + + } + + @Test + public void testColors() { + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var colors = new Colors(); + colors.setAnalysisColor("#dddddd"); + colors.setDefaultColor("#dddddd"); + colors.setDictionaryRequestColor("#dddddd"); + colors.setPreviewColor("#dddddd"); + colors.setManualRedactionColor("#dddddd"); + colors.setNotRedacted("#dddddd"); + colors.setRequestAdd("#dddddd"); + colors.setRequestRemove("#dddddd"); + colors.setUpdatedColor("#dddddd"); + + colors.setDossierTemplateId(dossierTemplate.getId()); + + dictionaryClient.setColors(dossierTemplate.getId(), colors); + + var savedColors = dictionaryClient.getColors(dossierTemplate.getId()); + assertThat(savedColors).isEqualTo(colors); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index f75e8a4fa..488fcb9ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -115,14 +115,42 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired private AuditRepository auditRepository; + @Autowired + private TypeRepository typeRepository; + + @Autowired + private ManualRedactionRepository manualRedactionRepository; + + @Autowired + private ForceRedactionRepository forceRedactionRepository; + + @Autowired + private RemoveRedactionRepository removeRedactionRepository; + + @Autowired + private LegalBasisChangeRepository legalBasisChangeRepository; + + @Autowired + private ImageRecategorizationRepository imageRecategorizationRepository; + + @Autowired + private LegalBasisMappingRepository legalBasisMappingRepository; + @After public void afterTests() { + typeRepository.deleteAll(); viewedPagesRepository.deleteAll(); fileRepository.deleteAll(); dossierRepository.deleteAll(); dossierTemplateRepository.deleteAll(); notificationRepository.deleteAll(); auditRepository.deleteAll(); + manualRedactionRepository.deleteAll(); + forceRedactionRepository.deleteAll(); + removeRedactionRepository.deleteAll(); + legalBasisChangeRepository.deleteAll(); + imageRecategorizationRepository.deleteAll(); + legalBasisMappingRepository.deleteAll();; } } From a85fc61971c078c6be5648cfe1508f8bb9ce8978 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Sun, 19 Sep 2021 23:14:43 +0300 Subject: [PATCH 4/4] manual red test --- .../v1/api/resources/DictionaryResource.java | 2 +- .../AddRedactionPersistenceService.java | 1 + .../DictionaryPersistenceService.java | 5 +- .../tests/ManualRedactionTest.java | 50 +++++++++++-------- .../v1/server/integration/tests/TypeTest.java | 18 +++++++ 5 files changed, 51 insertions(+), 25 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java index 846946b46..3c9d71128 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DictionaryResource.java @@ -46,7 +46,7 @@ public interface DictionaryResource { @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = TYPE_PATH + TYPE_PATH_VARIABLE + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(value = TYPE_PATH + TYPE_PATH_VARIABLE , consumes = MediaType.APPLICATION_JSON_VALUE) void updateTypeValue(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody Type typeValue); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java index e6bf7ad59..afe0a16e6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java @@ -30,6 +30,7 @@ public class AddRedactionPersistenceService { BeanUtils.copyProperties(addRedactionRequest, manualRedactionEntry); manualRedactionEntry.setRequestDate(OffsetDateTime.now()); manualRedactionEntry.setPositions(addRedactionRequest.getPositions()); + manualRedactionEntry.setTypeId(addRedactionRequest.getType()); manualRedactionRepository.save(manualRedactionEntry); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index 3bebb407e..4156b34c0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -62,8 +62,9 @@ public class DictionaryPersistenceService { public void updateType(String typeId, Type typeValueRequest) { typeRepository.findById(typeId).ifPresent((type) -> { + type.setVersion(type.getVersion() + 1); checkRankAlreadyExists(type.getType(), type.getDossierTemplate().getId(), typeValueRequest.getRank(), type.getDossier() == null ? null : type.getDossier().getId()); - BeanUtils.copyProperties(typeValueRequest, type); + BeanUtils.copyProperties(typeValueRequest, type, "dossierTemplateId", "dossierId", "entries", "dossierTemplate", "dossier", "id", "version"); }); } @@ -101,7 +102,7 @@ public class DictionaryPersistenceService { public Type getType(String typeId) { - return typeRepository.findById(typeId).orElseThrow(() -> new NotFoundException("No color found for type : " + typeId)); + return typeRepository.findById(typeId).orElseThrow(() -> new NotFoundException("Type: " + typeId + " not found")); } 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 5e050f755..faf6719e3 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,23 +1,16 @@ 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 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.*; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { @@ -40,32 +33,45 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var file = fileTesterAndProvider.testAndProvideFile(dossier); - var type = typeProvider.testAndProvideType(dossier.getDossierTemplate()); + var type = typeProvider.testAndProvideType(dossier.getDossierTemplate(), "manual"); + 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 addRedaction = manualRedactionClient.addAddRedaction(dossier.getId(), file.getId(), AddRedactionRequest.builder().addToDictionary(true) + .addToDossierDictionary(false).status(AnnotationStatus.REQUESTED).type(type.getId()).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"); + assertThat(loadedAddRedaction.getTypeId()).contains("manual"); - var removeRedaction = manualRedactionClient.addRemoveRedaction(dossier.getId(), file.getId(), RemoveRedactionRequest.builder().annotationId(addRedaction.getAnnotationId()).comment("commi").removeFromDictionary(false).build()); + + var removeRedaction = manualRedactionClient.addRemoveRedaction(dossier.getId(), file.getId(), RemoveRedactionRequest.builder() + .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").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); + assertThat(loadedRemoveRedaction.getSoftDeletedTime()).isNull(); - var forceRedaction = manualRedactionClient.addForceRedaction(dossier.getId(), file.getId(), ForceRedactionRequest.builder().annotationId(addRedaction.getAnnotationId()).comment("commi").legalBasis("1").build()); + + var forceRedaction = manualRedactionClient.addForceRedaction(dossier.getId(), file.getId(), ForceRedactionRequest.builder() + .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").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 + var legalBasisChange = manualRedactionClient.addLegalBasisChange(dossier.getId(), file.getId(), LegalBasisChangeRequest.builder() + .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build()); + var loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedLegalBasisChange.getId().getId()).isEqualTo(legalBasisChange.getAnnotationId()); + + + var imageRecategorization = manualRedactionClient.addImageRecategorization(dossier.getId(), file.getId(), ImageRecategorizationRequest.builder() + .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").type("new-type").build()); + var loadedImageRecategorization = manualRedactionClient.getImageRecategorization(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedImageRecategorization.getId().getId()).isEqualTo(imageRecategorization.getAnnotationId()); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java index f388fcf2a..8d89ab59d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java @@ -6,8 +6,10 @@ import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvid import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Colors; 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 org.assertj.core.util.Lists; import org.junit.Test; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; @@ -49,6 +51,22 @@ public class TypeTest extends AbstractPersistenceServerServiceTest { assertThat(loadedType.getVersion()).isGreaterThan(type.getVersion() + 1); + var request = new Type(); + BeanUtils.copyProperties(type, request); + request.setRank(99); + dictionaryClient.updateTypeValue(type.getId(), request); + + loadedType = dictionaryClient.getDictionaryForType(type.getId()); + assertThat(loadedType.getVersion()).isGreaterThan(type.getVersion() + 2); + assertThat(loadedType.getRank()).isEqualTo(99); + + + dictionaryClient.deleteType(type.getId()); + + + var typesForTemplate = dictionaryClient.getAllTypesForDossierTemplate(loadedType.getDossierTemplateId()); + assertThat(typesForTemplate).isEmpty(); + } @Test