diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml index d253cdbe8a37e82238e1e250e04b9e67de543aa6..a7842ff9ed4cf22b68878f7815e1bd881fd5ea5c 100644 --- a/goofy-server/pom.xml +++ b/goofy-server/pom.xml @@ -137,6 +137,13 @@ <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>de.itvsh.ozg.pluto</groupId> + <artifactId>pluto-utils</artifactId> + <type>test-jar</type> + <scope>test</scope> + <version>${pluto.version}</version> + </dependency> <dependency> <groupId>com.thedeanda</groupId> diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/errorhandling/ExceptionController.java b/goofy-server/src/main/java/de/itvsh/goofy/common/errorhandling/ExceptionController.java index da124a4d08d4d35fc37f223d149ab30f8ff3f11f..f961d9559de516b9ebb62f585a5388250a8b3ee6 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/errorhandling/ExceptionController.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/errorhandling/ExceptionController.java @@ -136,8 +136,8 @@ public class ExceptionController { } private Optional<DynamicViolationParameter> getDynamicPayload(ConstraintViolation<?> violation) { - var hibernateViolation = violation.unwrap(HibernateConstraintViolation.class); - return Optional.ofNullable((DynamicViolationParameter) hibernateViolation.getDynamicPayload(DynamicViolationParameter.class)); + HibernateConstraintViolation<?> hibernateViolation = violation.unwrap(HibernateConstraintViolation.class); + return Optional.ofNullable(hibernateViolation.getDynamicPayload(DynamicViolationParameter.class)); } @ExceptionHandler(TechnicalException.class) diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AntragstellerMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AntragstellerMapper.java index f9c2fcce3639def1c4c9ef973e20af9b2065de4a..ffb2d4a3dad6fbbd1542ec9c64438ac05296eeab 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AntragstellerMapper.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AntragstellerMapper.java @@ -4,6 +4,7 @@ import org.mapstruct.Mapper; import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.NullValuePropertyMappingStrategy; +import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; import de.itvsh.ozg.pluto.vorgang.GrpcAntragsteller; @Mapper(uses = { GrpcFormDataMapper.class }, // diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java index 2e0bcf3aab26c18e26fafcc477e3e6ce5f08c31a..f2e1c169e1c26668128d402135696cef18d21cb1 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java @@ -1,113 +1,18 @@ package de.itvsh.goofy.vorgang; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; - -import org.apache.commons.lang3.tuple.Pair; import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFormData; -import de.itvsh.ozg.pluto.vorgang.GrpcFormField; -import de.itvsh.ozg.pluto.vorgang.GrpcSubForm; @Mapper(uses = { AntragstellerMapper.class, - EingangHeaderMapper.class, ZustaendigeStelleMapper.class }, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) + EingangHeaderMapper.class, ZustaendigeStelleMapper.class, + GrpcFormDataMapper.class }, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) interface EingangMapper { @Mapping(source = "formData", target = "formData") Eingang fromGrpc(GrpcEingang eingang); - default Map<String, Object> mapFormData(GrpcFormData formData) { - Map<String, Object> result = new HashMap<>(); - result.putAll(mapSubFormFields(formData.getFieldList())); - result.putAll(mapFormData(formData.getFormList())); - return result; - } - - default Map<String, Object> mapFormData(List<GrpcSubForm> subForms) { - return subForms.stream().map(subForm -> Pair.of(subForm.getTitle(), mapSubForm(subForm))) - .collect(HashMap<String, Object>::new, this::pairAccumulator, this::combiner); - } - - private Map<String, Object> pairAccumulator(Map<String, Object> map, Pair<String, Map<String, Object>> pair) { - return addToMap(map, pair.getLeft(), pair.getRight()); - } - - default Map<String, Object> mapSubForm(GrpcSubForm subForm) { - Map<String, Object> result = new HashMap<>(); - result.putAll(mapSubFormFields(subForm.getFieldList())); - result.putAll(mapFormData(subForm.getSubFormList())); - return result; - } - - default Map<String, Object> mapSubFormFields(List<GrpcFormField> fields) { - return fields.stream().collect(HashMap<String, Object>::new, this::accumulator, this::combiner); - } - - private Map<String, Object> accumulator(Map<String, Object> map, GrpcFormField field) { - return addToMap(map, field.getName(), field.getValue()); - } - - default Map<String, Object> combiner(Map<String, Object> map1, Map<String, Object> map2) { - for (Entry<String, Object> entry : map2.entrySet()) { - addToMap(map1, entry.getKey(), entry.getValue()); - } - - return map1; - } - - @SuppressWarnings("unchecked") - private Map<String, Object> addToMap(Map<String, Object> map, String name, Object value) { - var valueInMap = map.get(name); - if (Objects.isNull(valueInMap)) { - map.put(name, value); - } else { - if (value instanceof Collection) { - addCollectionValue(map, name, (Collection<Object>) value); - } else { - addNonCollectionValue(map, name, value); - } - } - - return map; - } - - @SuppressWarnings("unchecked") - private Map<String, Object> addCollectionValue(Map<String, Object> map, String name, Collection<Object> value) { - var valueInMap = map.get(name); - - var newList = new LinkedList<Object>(); - if (valueInMap instanceof Collection) { - newList.addAll((Collection<? extends Object>) valueInMap); - newList.addAll(value); - } else { - newList.add(valueInMap); - newList.addAll(value); - } - map.put(name, newList); - return map; - } - - @SuppressWarnings("unchecked") - private Map<String, Object> addNonCollectionValue(Map<String, Object> map, String name, Object value) { - var valueInMap = map.get(name); - - if (valueInMap instanceof Collection) { - var newList = new LinkedList<>((Collection<Object>) valueInMap); - newList.add(value); - map.put(name, newList); - } else { - map.put(name, new LinkedList<>(List.of(valueInMap, value))); - } - - return map; - } } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/GrpcFormDataMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/GrpcFormDataMapper.java deleted file mode 100644 index 16082e3c29ccb56105bc0ea4ac2e7b5eb492e0a6..0000000000000000000000000000000000000000 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/GrpcFormDataMapper.java +++ /dev/null @@ -1,183 +0,0 @@ -package de.itvsh.goofy.vorgang; - -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.tuple.Pair; -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Mapper; -import org.mapstruct.NullValueCheckStrategy; -import org.mapstruct.NullValuePropertyMappingStrategy; -import org.mapstruct.ReportingPolicy; - -import de.itvsh.ozg.pluto.vorgang.GrpcFormData; -import de.itvsh.ozg.pluto.vorgang.GrpcFormField; -import de.itvsh.ozg.pluto.vorgang.GrpcSubForm; - -@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, // - unmappedSourcePolicy = ReportingPolicy.WARN, // - nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, // - nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, // - collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) -interface GrpcFormDataMapper { - - default GrpcFormData mapToFormData(Map<String, Object> formData) { - return GrpcFormData.newBuilder() - .addAllField(mapToAllFields(formData)) - .addAllForm(mapToSubForms(formData)) - .addAllField(mapStringListsToFields(formData)) - .addAllForm(mapObjectListsToFields(formData)).build(); - } - - default List<GrpcFormField> mapToAllFields(Map<String, Object> formData) { - return formData.entrySet().stream().filter(entry -> entry.getValue() instanceof String)// - .map(entry -> mapToField(entry.getKey(), entry.getValue().toString()))// - .collect(Collectors.toList()); - } - - default List<GrpcFormField> mapStringListsToFields(Map<String, Object> formData) { - return formData.entrySet().stream() - .filter(entry -> entry.getValue() instanceof List) - .map(this::mapListStringElementsToFormFields) - .flatMap(List::stream) - .collect(Collectors.toList()); - } - - @SuppressWarnings("unchecked") - private List<GrpcFormField> mapListStringElementsToFormFields(Entry<String, Object> entry) { - return ((List<Object>) entry.getValue()).stream() - .filter(String.class::isInstance) - .map(String.class::cast) - .map(e -> mapToField(entry.getKey(), e)) - .collect(Collectors.toList()); - } - - default List<GrpcSubForm> mapObjectListsToFields(Map<String, Object> formData) { - return formData.entrySet().stream() - .filter(entry -> entry.getValue() instanceof List) - .map(this::mapListObjectElementsToFormFields) - .flatMap(List::stream) - .collect(Collectors.toList()); - } - - @SuppressWarnings("unchecked") - private List<GrpcSubForm> mapListObjectElementsToFormFields(Entry<String, Object> entry) { - return ((List<Object>) entry.getValue()).stream() - .filter(Map.class::isInstance) - .map(Map.class::cast) - .map(e -> buildSubForm(entry.getKey(), e)) - .collect(Collectors.toList()); - } - - @SuppressWarnings("unchecked") - default List<GrpcSubForm> mapToSubForms(Map<String, Object> formData) { - return formData.entrySet().stream() - .filter(entry -> entry.getValue() instanceof Map) - .map(entry -> buildSubForm(entry.getKey(), (Map<String, Object>) entry.getValue())) - .collect(Collectors.toList()); - } - - default GrpcSubForm buildSubForm(String name, Map<String, Object> map) { - return GrpcSubForm.newBuilder().setTitle(name) - .addAllField(mapToAllFields(map)) - .addAllSubForm(mapToSubForms(map)) - .addAllField(mapStringListsToFields(map)) - .addAllSubForm(mapObjectListsToFields(map)).build(); - } - - default GrpcFormField mapToField(String name, String value) { - return GrpcFormField.newBuilder().setName(name).setValue(value).build(); - } - - default Map<String, Object> mapFromFormData(GrpcFormData formData) { - Map<String, Object> result = new HashMap<>(); - result.putAll(mapSubFormFields(formData.getFieldList())); - result.putAll(mapFormData(formData.getFormList())); - return result; - } - - default Map<String, Object> mapFormData(List<GrpcSubForm> subForms) { - return subForms.stream().map(subForm -> Pair.of(subForm.getTitle(), mapSubForm(subForm))) - .collect(HashMap<String, Object>::new, this::pairAccumulator, this::combiner); - } - - private Map<String, Object> pairAccumulator(Map<String, Object> map, Pair<String, Map<String, Object>> pair) { - return addToMap(map, pair.getLeft(), pair.getRight()); - } - - default Map<String, Object> mapSubForm(GrpcSubForm subForm) { - Map<String, Object> result = new HashMap<>(); - result.putAll(mapSubFormFields(subForm.getFieldList())); - result.putAll(mapFormData(subForm.getSubFormList())); - return result; - } - - default Map<String, Object> mapSubFormFields(List<GrpcFormField> fields) { - return fields.stream().collect(HashMap<String, Object>::new, this::accumulator, this::combiner); - } - - private Map<String, Object> accumulator(Map<String, Object> map, GrpcFormField field) { - return addToMap(map, field.getName(), field.getValue()); - } - - default Map<String, Object> combiner(Map<String, Object> map1, Map<String, Object> map2) { - for (Entry<String, Object> entry : map2.entrySet()) { - addToMap(map1, entry.getKey(), entry.getValue()); - } - - return map1; - } - - @SuppressWarnings("unchecked") - private Map<String, Object> addToMap(Map<String, Object> map, String name, Object value) { - var valueInMap = map.get(name); - if (Objects.isNull(valueInMap)) { - map.put(name, value); - } else { - if (value instanceof Collection) { - addCollectionValue(map, name, (Collection<Object>) value); - } else { - addNonCollectionValue(map, name, value); - } - } - - return map; - } - - @SuppressWarnings("unchecked") - private Map<String, Object> addCollectionValue(Map<String, Object> map, String name, Collection<Object> value) { - var valueInMap = map.get(name); - - var newList = new LinkedList<Object>(); - if (valueInMap instanceof Collection) { - newList.addAll((Collection<? extends Object>) valueInMap); - newList.addAll(value); - } else { - newList.add(valueInMap); - newList.addAll(value); - } - map.put(name, newList); - return map; - } - - @SuppressWarnings("unchecked") - private Map<String, Object> addNonCollectionValue(Map<String, Object> map, String name, Object value) { - var valueInMap = map.get(name); - - if (valueInMap instanceof Collection) { - var newList = new LinkedList<>((Collection<Object>) valueInMap); - newList.add(value); - map.put(name, newList); - } else { - map.put(name, new LinkedList<>(List.of(valueInMap, value))); - } - - return map; - } -} diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java index 9b45b69a4d0dca4b81f831e3912a029508d20dd4..89c4004a925bfbe95f29bce96367f38fb174c470 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java @@ -202,6 +202,7 @@ class CommandBodyMapperTest { assertThat(mappedItemMap).contains(attachmentsEntry); } + @SuppressWarnings("unchecked") private Map<String, Object> getMappedItemEntry() { return (Map<String, Object>) mapToBodyMap().get(CommandBodyMapper.ITEM_PROPERTY); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/errorhandling/ExceptionTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/common/errorhandling/ExceptionTestFactory.java index c9edc8e51cc342c12dc863579db74da7f36fc0f0..2df1fb5fa6e6421d349e0bc9342552b6e87fcf04 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/errorhandling/ExceptionTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/errorhandling/ExceptionTestFactory.java @@ -33,10 +33,12 @@ public class ExceptionTestFactory { return ExceptionTestFactory.buildMockedConstraintViolationWithDynamicPayload(null); } - public static ConstraintViolation<?> buildMockedConstraintViolationWithDynamicPayload(DynamicViolationParameter dynamicViolationParameter) { - var violation = mock(ConstraintViolation.class); - var hibernateViolation = mock(HibernateConstraintViolation.class); - var constraintDescriptor = mock(ConstraintDescriptor.class); + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static <T> ConstraintViolation<T> buildMockedConstraintViolationWithDynamicPayload(DynamicViolationParameter dynamicViolationParameter) { + ConstraintViolation violation = mock(ConstraintViolation.class); + HibernateConstraintViolation hibernateViolation = mock(HibernateConstraintViolation.class); + ConstraintDescriptor constraintDescriptor = mock(ConstraintDescriptor.class); + var path = mock(Path.class); when(path.toString()).thenReturn(PATH); when(violation.getPropertyPath()).thenReturn(path); diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/AntragstellerMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/AntragstellerMapperTest.java index 1610237f884055bd2ec283f071d14ee58ab026d8..b27a1632c0ebb14879b2093c7f6cd1e9c8789c76 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/AntragstellerMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/AntragstellerMapperTest.java @@ -8,6 +8,8 @@ import org.mapstruct.factory.Mappers; import org.mockito.InjectMocks; import org.mockito.Spy; +import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; + class AntragstellerMapperTest { @InjectMocks diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/EingangMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/EingangMapperTest.java index 7c905c7ce765e4143d7659423ad6c586d7b6e94c..a8dadc9100802b666f056743b986a486977d92b5 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/EingangMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/EingangMapperTest.java @@ -1,25 +1,19 @@ package de.itvsh.goofy.vorgang; -import static de.itvsh.goofy.vorgang.GrpcSubFormTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Spy; +import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFormData; -import de.itvsh.ozg.pluto.vorgang.GrpcSubForm; class EingangMapperTest { @@ -30,6 +24,8 @@ class EingangMapperTest { private AntragstellerMapper antragstellerMapper; @Mock private EingangHeaderMapper eingangHeaderMapper; + @Spy + private GrpcFormDataMapper formDataMapper = Mappers.getMapper(GrpcFormDataMapper.class); @Nested class TestGrpcEingangToEingang { @@ -79,184 +75,5 @@ class EingangMapperTest { assertThat(eingang.getAntragsteller()).isNull(); assertThat(eingang.getHeader()).isNull(); } - - @DisplayName("Mapped SubFormField") - @Nested - class TestSubFormFieldMapping { - - private final GrpcSubForm subForm = GrpcSubFormTestFactory.create(); - - @Test - void shouldContainField() { - var mapped = mapper.mapSubFormFields(subForm.getFieldList()); - - assertThat(mapped).containsKey(FIELD_NAME); - } - - @Test - void shouldContainValue() { - var mapped = mapper.mapSubFormFields(subForm.getFieldList()); - - assertThat(mapped).containsEntry(FIELD_NAME, FIELD_VALUE); - } - - @Nested - class TestCombiner { - @Test - void missingInMap2ShouldContainValue() { - Map<String, Object> map1 = Map.of("TEST", "VALUE1"); - Map<String, Object> map2 = Map.of(); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", "VALUE1"); - } - - @Test - void missingInMap1ShouldContainValue() { - Map<String, Object> map1 = new HashMap<>(); - Map<String, Object> map2 = Map.of("TEST", "VALUE1"); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", "VALUE1"); - } - - @Test - void inBothMapShouldCombineToList() { - Map<String, Object> map1 = new HashMap<>(Map.of("TEST", "VALUE1")); - Map<String, Object> map2 = Map.of("TEST", "VALUE2"); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", List.of("VALUE1", "VALUE2")); - } - - @Test - void listInMap2ShouldStayAList() { - Map<String, Object> map1 = Map.of("TEST", List.of("VALUE1", "VALUE2")); - Map<String, Object> map2 = Map.of(); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", List.of("VALUE1", "VALUE2")); - } - - @Test - void valueInMap1ShouldBeAddedToList() { - Map<String, Object> map1 = new HashMap<>(Map.of("TEST", "VALUE1")); - Map<String, Object> map2 = Map.of("TEST", List.of("VALUE2", "VALUE3")); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", List.of("VALUE1", "VALUE2", "VALUE3")); - } - - @Test - void valueInMap2ShouldBeAddedToList() { - Map<String, Object> map1 = new HashMap<>(Map.of("TEST", List.of("VALUE1", "VALUE2"))); - Map<String, Object> map2 = Map.of("TEST", "VALUE3"); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", List.of("VALUE1", "VALUE2", "VALUE3")); - } - - @Test - void listInMap1ShouldStayAList() { - Map<String, Object> map1 = new HashMap<>(); - Map<String, Object> map2 = Map.of("TEST", List.of("VALUE1", "VALUE2")); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", List.of("VALUE1", "VALUE2")); - } - - @Test - void listInBothMapsShouldByCombined() { - Map<String, Object> map1 = new HashMap<>(Map.of("TEST", List.of("VALUE1", "VALUE2"))); - Map<String, Object> map2 = Map.of("TEST", List.of("VALUE3", "VALUE4")); - - var combined = mapper.combiner(map1, map2); - - assertThat(combined).containsEntry("TEST", List.of("VALUE1", "VALUE2", "VALUE3", "VALUE4")); - } - } - } - - @DisplayName("Mapped FormData") - @Nested - class TestMapGrpcSubFormToSubForm { - - @Test - void shouldNotBeEmpty() { - GrpcEingang grpcEingang = GrpcEingangTestFactory.create(); - - var eingang = mapper.fromGrpc(grpcEingang); - - assertThat(eingang.getFormData()).isNotEmpty(); - } - - @Test - void shouldHaveMappedSubForm() { - GrpcEingang grpcEingang = GrpcEingangTestFactory.create(); - - var eingang = mapper.fromGrpc(grpcEingang); - - assertThat(eingang.getFormData()).containsKey(TITLE); - } - - @DisplayName("mapped FormData should contain fields") - @Test - void fieldsInSubForm() { - GrpcEingang grpcEingang = GrpcEingangTestFactory.create(); - - var eingang = mapper.fromGrpc(grpcEingang); - @SuppressWarnings("unchecked") - Map<String, Object> formData = (Map<String, Object>) eingang.getFormData().get(TITLE); - - assertThat(formData).containsEntry(FIELD_NAME, FIELD_VALUE); - } - - @DisplayName("mapped FormData should contains subForm") - @Test - void shouldHaveMappedSubFormWithSubForm() { - GrpcEingang grpcEingang = GrpcEingangTestFactory.create(); - - var eingang = mapper.fromGrpc(grpcEingang); - @SuppressWarnings("unchecked") - Map<String, Object> formData = (Map<String, Object>) eingang.getFormData().get(TITLE); - - assertThat(formData).containsKey(GrpcSubFormTestFactory.SUBFORM_NAME); - } - - @DisplayName("mapped SubForm should contain List of SubForms") - @Test - void shouldHaveMappedListOfSubForms() { - GrpcEingang grpcEingang = GrpcEingangTestFactory.createBuilder().setFormData(GrpcFormData.newBuilder() - .addForm(GrpcSubFormTestFactory.create()) - .addForm(GrpcSubFormTestFactory.create()) - .build()).build(); - - var eingang = mapper.fromGrpc(grpcEingang); - @SuppressWarnings("unchecked") - var formData = (List<Map<String, Object>>) eingang.getFormData().get(TITLE); - - assertThat(formData).contains(EingangTestFactory.AS_MAP, EingangTestFactory.AS_MAP); - } - - @DisplayName("mapped SubForm should contain field") - @Test - void subFormShouldContainField() { - GrpcEingang grpcEingang = GrpcEingangTestFactory.create(); - - var eingang = mapper.fromGrpc(grpcEingang); - @SuppressWarnings("unchecked") - Map<String, Object> subForm = (Map<String, Object>) ((Map<String, Object>) eingang.getFormData().get(TITLE)).get(SUBFORM_NAME); - - assertThat(subForm).containsEntry(SUBFORM_FIELD_NAME, SUBFORM_FIELD_VALUE); - } - - } } } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcFormDataMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcFormDataMapperTest.java index 4be9a08c5e4d6f98a932241bf75a0eaa218986ad..e2b435a87eec79ed87fca5615b0a64b0f6b4bc1d 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcFormDataMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcFormDataMapperTest.java @@ -15,6 +15,7 @@ import org.mapstruct.factory.Mappers; import org.mockito.InjectMocks; import org.mockito.Mock; +import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; import de.itvsh.ozg.pluto.vorgang.GrpcFormData; import de.itvsh.ozg.pluto.vorgang.GrpcFormField; import de.itvsh.ozg.pluto.vorgang.GrpcSubForm;