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..41180bab88ef3c302300bd1e51ca34e3ed89619b 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentMapper.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentMapper.java @@ -26,12 +26,14 @@ package de.ozgcloud.document; import org.apache.commons.collections.MapUtils; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.NullValueCheckStrategy; import de.ozgcloud.bescheid.attacheditem.AttachedItem; -@Mapper +@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) interface DocumentMapper { + @Mapping(target = "allFields", ignore = true) @Mapping(target = "unknownFields", ignore = true) @Mapping(target = "typeBytes", ignore = true) @Mapping(target = "nachrichtTextBytes", ignore = true) @@ -44,7 +46,7 @@ interface DocumentMapper { @Mapping(target = "clearField", ignore = true) GrpcDocument toGrpcDocument(Document document); - default Document fromAttacheItem(AttachedItem attachedItem) { + default Document fromAttachedItem(AttachedItem attachedItem) { return Document.builder() .id(attachedItem.getId()) .type(MapUtils.getString(attachedItem.getItem(), Document.FIELD_DOCUMENT_TYPE)) diff --git a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java index 6400a8c11d2713b1b133d06c094ceb341210201b..f290e57572d8bf1a95a9dec9a8b54671a6b179c8 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/document/DocumentService.java @@ -96,6 +96,6 @@ public class DocumentService { } public Document getDocument(String id) { - return documentMapper.fromAttacheItem(attachedItemService.getItem(id)); + return documentMapper.fromAttachedItem(attachedItemService.getItem(id)); } } 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..9ba02e1e11c796f19fc771e9ed29000f911690cd 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,83 @@ package de.ozgcloud.document; import static org.assertj.core.api.Assertions.*; +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()); + @Test + void shouldMapEmptyDocument() { + var result = mapper.toGrpcDocument(Document.builder().build()); + + assertThat(result).isEqualTo(GrpcDocument.newBuilder().build()); + } } + @DisplayName("From attached item") + @Nested + class TestFromAttachedItem { + + @Test + void shouldMapId() { + var document = AttachedItemTestFactory.createDocument(); + + var result = mapper.fromAttachedItem(document); + + assertThat(result.getId()).isEqualTo(AttachedItemTestFactory.ID); + } + + @Test + void shouldMapType() { + var document = AttachedItemTestFactory.createDocument(); + + var result = mapper.fromAttachedItem(document); + + assertThat(result.getType()).isEqualTo(DocumentService.DOCUMENT_TYPE); + } + + @Test + void shouldMapFileId() { + var document = AttachedItemTestFactory.createDocument(); + + var result = mapper.fromAttachedItem(document); + + assertThat(result.getFileId()).isEqualTo(DocumentTestFactory.DOCUMENT_FILE); + } + + @Test + void shouldMapNachrichtText() { + var document = AttachedItemTestFactory.createDocument(); + + var result = mapper.fromAttachedItem(document); + + assertThat(result.getNachrichtText()).isEqualTo(DocumentTestFactory.NACHRICHT_TEXT); + } + + @Test + void shouldMapNachrichtSubject() { + var document = AttachedItemTestFactory.createDocument(); + + var result = mapper.fromAttachedItem(document); + + assertThat(result.getNachrichtSubject()).isEqualTo(DocumentTestFactory.NACHRICHT_SUBJECT); + } + } } \ No newline at end of file diff --git a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java index d97c1176e3ba0e435914364ed92a077d00f2ddc5..736947b3a9ede6e9fbd04893ae3f6079887b4fcd 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java @@ -313,13 +313,13 @@ class DocumentServiceTest { service.getDocument(AttachedItemTestFactory.ID); - verify(documentMapper).fromAttacheItem(expectedItem); + verify(documentMapper).fromAttachedItem(expectedItem); } @Test void shouldReturnDocument() { var expectedDocument = DocumentTestFactory.create(); - when(documentMapper.fromAttacheItem(any())).thenReturn(expectedDocument); + when(documentMapper.fromAttachedItem(any())).thenReturn(expectedDocument); Document document = service.getDocument(AttachedItemTestFactory.ID);