From 80c38ac52157c01cdd3280f01604e0f20a58b241 Mon Sep 17 00:00:00 2001 From: Krzysztof Witukiewicz <krzysztof.witukiewicz@mgm-tp.com> Date: Thu, 23 Jan 2025 11:01:54 +0100 Subject: [PATCH] OZG-7262 OZG-7584 Attachments should not be null --- .../archive/export/ExportGrpcService.java | 2 - .../ozgcloud/archive/kommentar/Kommentar.java | 2 + .../archive/kommentar/KommentarMapper.java | 2 + .../kommentar/KommentarMapperTest.java | 153 ++++++++++-------- 4 files changed, 88 insertions(+), 71 deletions(-) diff --git a/archive-manager-server/src/main/java/de/ozgcloud/archive/export/ExportGrpcService.java b/archive-manager-server/src/main/java/de/ozgcloud/archive/export/ExportGrpcService.java index 6589322..5cae921 100644 --- a/archive-manager-server/src/main/java/de/ozgcloud/archive/export/ExportGrpcService.java +++ b/archive-manager-server/src/main/java/de/ozgcloud/archive/export/ExportGrpcService.java @@ -44,8 +44,6 @@ import net.devh.boot.grpc.server.service.GrpcService; @RequiredArgsConstructor class ExportGrpcService extends ExportServiceImplBase { - static final int CHUNK_SIZE = 256 * 1024; - private final ExportService exportService; private final TaskExecutor taskExecutor; diff --git a/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/Kommentar.java b/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/Kommentar.java index 4039231..ade35f0 100644 --- a/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/Kommentar.java +++ b/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/Kommentar.java @@ -29,6 +29,7 @@ import java.util.List; import de.ozgcloud.common.binaryfile.FileId; import lombok.Builder; import lombok.Getter; +import lombok.Singular; @Builder @Getter @@ -37,5 +38,6 @@ public class Kommentar { private String text; private ZonedDateTime createdAt; private String createdBy; + @Singular private List<FileId> attachments; } diff --git a/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/KommentarMapper.java b/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/KommentarMapper.java index 64ebb6a..58c046a 100644 --- a/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/KommentarMapper.java +++ b/archive-manager-server/src/main/java/de/ozgcloud/archive/kommentar/KommentarMapper.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Objects; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.ReportingPolicy; import org.springframework.beans.factory.annotation.Autowired; @@ -55,6 +56,7 @@ abstract class KommentarMapper { return grpcObjectMapper.mapFromGrpc(item); } + @Mapping(target = "attachment", ignore = true) abstract Kommentar mapItemMapToKommentar(Map<String, Object> map); String mapObjectToString(Object object) { diff --git a/archive-manager-server/src/test/java/de/ozgcloud/archive/kommentar/KommentarMapperTest.java b/archive-manager-server/src/test/java/de/ozgcloud/archive/kommentar/KommentarMapperTest.java index d871e38..368c51b 100644 --- a/archive-manager-server/src/test/java/de/ozgcloud/archive/kommentar/KommentarMapperTest.java +++ b/archive-manager-server/src/test/java/de/ozgcloud/archive/kommentar/KommentarMapperTest.java @@ -145,101 +145,116 @@ class KommentarMapperTest { @Nested class TestMapItemMapToKommentar { - @BeforeEach - void init() { - doReturn(KommentarTestFactory.ID).when(mapper).mapObjectToString(KommentarTestFactory.ID); - doReturn(KommentarTestFactory.TEXT).when(mapper).mapObjectToString(KommentarTestFactory.TEXT); - doReturn(KommentarTestFactory.CREATED_BY).when(mapper).mapObjectToString(KommentarTestFactory.CREATED_BY); - doReturn(KommentarTestFactory.CREATED_AT_STR).when(mapper).mapObjectToString(KommentarTestFactory.CREATED_AT_STR); + @Nested + class OnAllFieldsSet { - when(timeMapper.parseString(KommentarTestFactory.CREATED_AT_STR)).thenReturn(KommentarTestFactory.CREATED_AT); - when(attachmentMapper.mapAttachments(argThat(this::isCollectionOfAttachmentIds))).thenReturn(KommentarTestFactory.ATTACHMENTS); - } + @BeforeEach + void init() { + doReturn(KommentarTestFactory.ID).when(mapper).mapObjectToString(KommentarTestFactory.ID); + doReturn(KommentarTestFactory.TEXT).when(mapper).mapObjectToString(KommentarTestFactory.TEXT); + doReturn(KommentarTestFactory.CREATED_BY).when(mapper).mapObjectToString(KommentarTestFactory.CREATED_BY); + doReturn(KommentarTestFactory.CREATED_AT_STR).when(mapper).mapObjectToString(KommentarTestFactory.CREATED_AT_STR); - @Test - void shouldMapIdToString() { - callMapper(); + when(timeMapper.parseString(KommentarTestFactory.CREATED_AT_STR)).thenReturn(KommentarTestFactory.CREATED_AT); + when(attachmentMapper.mapAttachments(argThat(this::isCollectionOfAttachmentIds))).thenReturn(KommentarTestFactory.ATTACHMENTS); + } - verify(mapper).mapObjectToString(KommentarTestFactory.ID); - } + @Test + void shouldMapIdToString() { + callMapper(); - @Test - void shouldMapId() { - var kommentar = callMapper(); + verify(mapper).mapObjectToString(KommentarTestFactory.ID); + } - assertThat(kommentar.getId()).isEqualTo(KommentarTestFactory.ID); - } + @Test + void shouldMapId() { + var kommentar = callMapper(); - @Test - void shouldMapTextToString() { - callMapper(); + assertThat(kommentar.getId()).isEqualTo(KommentarTestFactory.ID); + } - verify(mapper).mapObjectToString(KommentarTestFactory.TEXT); - } + @Test + void shouldMapTextToString() { + callMapper(); - @Test - void shouldMapText() { - var kommentar = callMapper(); + verify(mapper).mapObjectToString(KommentarTestFactory.TEXT); + } - assertThat(kommentar.getText()).isEqualTo(KommentarTestFactory.TEXT); - } + @Test + void shouldMapText() { + var kommentar = callMapper(); - @Test - void shouldMapCreatedByToString() { - callMapper(); + assertThat(kommentar.getText()).isEqualTo(KommentarTestFactory.TEXT); + } - verify(mapper).mapObjectToString(KommentarTestFactory.CREATED_BY); - } + @Test + void shouldMapCreatedByToString() { + callMapper(); - @Test - void shouldMapCreatedBy() { - var kommentar = callMapper(); + verify(mapper).mapObjectToString(KommentarTestFactory.CREATED_BY); + } - assertThat(kommentar.getCreatedBy()).isEqualTo(KommentarTestFactory.CREATED_BY); - } + @Test + void shouldMapCreatedBy() { + var kommentar = callMapper(); - @Test - void shouldMapCreatedAtToString() { - callMapper(); + assertThat(kommentar.getCreatedBy()).isEqualTo(KommentarTestFactory.CREATED_BY); + } - verify(mapper).mapObjectToString(KommentarTestFactory.CREATED_AT_STR); - } + @Test + void shouldMapCreatedAtToString() { + callMapper(); - @Test - void shouldCallTimeMapper() { - callMapper(); + verify(mapper).mapObjectToString(KommentarTestFactory.CREATED_AT_STR); + } - verify(timeMapper).parseString(KommentarTestFactory.CREATED_AT_STR); - } + @Test + void shouldCallTimeMapper() { + callMapper(); - @Test - void shouldMapCreatedAt() { - var kommentar = callMapper(); + verify(timeMapper).parseString(KommentarTestFactory.CREATED_AT_STR); + } - assertThat(kommentar.getCreatedAt()).isEqualTo(KommentarTestFactory.CREATED_AT); - } + @Test + void shouldMapCreatedAt() { + var kommentar = callMapper(); - @Test - void shouldCallAttachmentMapper() { - callMapper(); + assertThat(kommentar.getCreatedAt()).isEqualTo(KommentarTestFactory.CREATED_AT); + } - verify(attachmentMapper).mapAttachments(argThat(this::isCollectionOfAttachmentIds)); - } + @Test + void shouldCallAttachmentMapper() { + callMapper(); - @Test - void shouldMapAttachments() { - var kommentar = callMapper(); + verify(attachmentMapper).mapAttachments(argThat(this::isCollectionOfAttachmentIds)); + } - assertThat(kommentar.getAttachments()).containsExactlyElementsOf(KommentarTestFactory.ATTACHMENTS); - } + @Test + void shouldMapAttachments() { + var kommentar = callMapper(); - @SuppressWarnings("unchecked") - private boolean isCollectionOfAttachmentIds(Object obj) { - return obj instanceof Collection && ((Collection<String>) obj).containsAll(GrpcKommentarTestFactory.ATTACHMENTS); + assertThat(kommentar.getAttachments()).containsExactlyElementsOf(KommentarTestFactory.ATTACHMENTS); + } + + @SuppressWarnings("unchecked") + private boolean isCollectionOfAttachmentIds(Object obj) { + return obj instanceof Collection && ((Collection<String>) obj).containsAll(GrpcKommentarTestFactory.ATTACHMENTS); + } + + private Kommentar callMapper() { + return mapper.mapItemMapToKommentar(GrpcKommentarTestFactory.createItemAsMap()); + } } - private Kommentar callMapper() { - return mapper.mapItemMapToKommentar(GrpcKommentarTestFactory.createItemAsMap()); + @Nested + class OnAttachmentsMissing { + + @Test + void shouldSetToEmptyCollection() { + var kommentar = mapper.mapItemMapToKommentar(Map.of()); + + assertThat(kommentar.getAttachments()).isEmpty(); + } } } -- GitLab