diff --git a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentMapper.java b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentMapper.java index 85b43ea2c05fe716168026578a7a2071cd937ee1..ddcddab63cbcd09941b61a678ce495ff5f389384 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentMapper.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentMapper.java @@ -24,6 +24,7 @@ package de.ozgcloud.document; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -32,6 +33,7 @@ import de.ozgcloud.bescheid.attacheditem.AttachedItem; @Mapper interface DocumentMapper { + @Mapping(target = "allFields", ignore = true) @Mapping(target = "unknownFields", ignore = true) @Mapping(target = "typeBytes", ignore = true) @Mapping(target = "nachrichtTextBytes", ignore = true) @@ -49,8 +51,8 @@ interface DocumentMapper { .id(attachedItem.getId()) .type(MapUtils.getString(attachedItem.getItem(), Document.FIELD_DOCUMENT_TYPE)) .fileId(MapUtils.getString(attachedItem.getItem(), Document.FIELD_DOCUMENT_FILE)) - .nachrichtText(MapUtils.getString(attachedItem.getItem(), Document.FIELD_NACHRICHT_TEXT)) - .nachrichtSubject(MapUtils.getString(attachedItem.getItem(), Document.FIELD_NACHRICHT_SUBJECT)) + .nachrichtText(MapUtils.getString(attachedItem.getItem(), Document.FIELD_NACHRICHT_TEXT, StringUtils.EMPTY)) + .nachrichtSubject(MapUtils.getString(attachedItem.getItem(), Document.FIELD_NACHRICHT_SUBJECT, StringUtils.EMPTY)) .build(); } } diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemTestFactory.java index 18fa5737493cae7b9fc7907e643844f661a4d2dc..56fb0e8ad3050b0dc143f888671c4ef9c59bb8f2 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemTestFactory.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemTestFactory.java @@ -23,6 +23,7 @@ */ package de.ozgcloud.bescheid.attacheditem; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,7 +53,7 @@ public class AttachedItemTestFactory { .build(); } - public static Map<String, Object> createBescheidItem() { + public static Map<String, Object> createBescheidItem() { return Map.of( BescheidItem.FIELD_STATUS, BescheidItem.Status.DRAFT, BescheidItem.FIELD_BESCHIEDEN_AM, BESCHEIDEN_AM, @@ -65,19 +66,22 @@ public class AttachedItemTestFactory { } public static AttachedItem createDocument() { + return createDocumentBuilder().build(); + } + + public static AttachedItem.AttachedItemBuilder createDocumentBuilder() { return createBuilder() .itemName(DocumentService.DOCUMENT_ITEM_NAME) - .item(createDocumentItem()) - .build(); + .item(createDocumentItem()); } - public static Map<String, Object> createDocumentItem() { - return Map.of( - Document.FIELD_DOCUMENT_TYPE, DocumentService.DOCUMENT_TYPE, - Document.FIELD_DOCUMENT_FILE, DocumentTestFactory.DOCUMENT_FILE, - Document.FIELD_NACHRICHT_TEXT, DocumentTestFactory.NACHRICHT_TEXT, - Document.FIELD_NACHRICHT_SUBJECT, DocumentTestFactory.NACHRICHT_SUBJECT - ); + public static HashMap<String, Object> createDocumentItem() { + var map = new HashMap<String, Object>(); + map.put(Document.FIELD_DOCUMENT_TYPE, DocumentService.DOCUMENT_TYPE); + map.put(Document.FIELD_DOCUMENT_FILE, DocumentTestFactory.DOCUMENT_FILE); + map.put(Document.FIELD_NACHRICHT_TEXT, DocumentTestFactory.NACHRICHT_TEXT); + map.put(Document.FIELD_NACHRICHT_SUBJECT, DocumentTestFactory.NACHRICHT_SUBJECT); + return map; } public static AttachedItemBuilder createBuilder() { diff --git a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentMapperTest.java b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentMapperTest.java index 889c1d5609d248320868317704b5b553ffd9bab6..39abe132bcebea883c963939d0c23fb3591fa915 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentMapperTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentMapperTest.java @@ -25,18 +25,55 @@ package de.ozgcloud.document; import static org.assertj.core.api.Assertions.*; +import org.apache.commons.lang3.StringUtils; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; +import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory; + class DocumentMapperTest { private DocumentMapper mapper = Mappers.getMapper(DocumentMapper.class); - @Test - void shouldMapDocument() { - var result = mapper.toGrpcDocument(DocumentTestFactory.create()); + @DisplayName("To grpc document") + @Nested + class TestToGrpcDocument { + + @Test + void shouldMapDocument() { + var result = mapper.toGrpcDocument(DocumentTestFactory.create()); + + assertThat(result).usingRecursiveComparison().isEqualTo(GrpcDocumentTestFactory.create()); + } - assertThat(result).usingRecursiveComparison().isEqualTo(GrpcDocumentTestFactory.create()); } + @DisplayName("From attached item") + @Nested + class TestFromAttachedItem { + + @Test + void shouldMapMissingNachrichtSubjectToEmptyString() { + var documentItem = AttachedItemTestFactory.createDocumentItem(); + documentItem.remove(Document.FIELD_NACHRICHT_SUBJECT); + var document = AttachedItemTestFactory.createDocumentBuilder().item(documentItem).build(); + + var result = mapper.fromAttacheItem(document); + + assertThat(result.getNachrichtSubject()).isEqualTo(StringUtils.EMPTY); + } + + @Test + void shouldMapMissingNachrichtTextToEmptyString() { + var documentItem = AttachedItemTestFactory.createDocumentItem(); + documentItem.remove(Document.FIELD_NACHRICHT_TEXT); + var document = AttachedItemTestFactory.createDocumentBuilder().item(documentItem).build(); + + var result = mapper.fromAttacheItem(document); + + assertThat(result.getNachrichtText()).isEqualTo(StringUtils.EMPTY); + } + } } \ No newline at end of file