From de104aea68c5554fb05b22995707e2202b32fb53 Mon Sep 17 00:00:00 2001
From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de>
Date: Tue, 23 Apr 2024 18:11:06 +0200
Subject: [PATCH] fix mapping numberOfAttachments for GRPC

---
 .../common/formdata/FormDataTestFactory.java  |  7 +++---
 .../eingang/router/GrpcEingangMapper.java     | 23 ++++++++++---------
 .../router/GrpcEingangMapperITCase.java       |  4 ++--
 .../eingang/router/GrpcEingangMapperTest.java |  8 +++----
 .../router/VorgangRemoteServiceTest.java      |  2 +-
 ...FormSolutionsEngineBasedAdapterITCase.java |  3 ++-
 6 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
index 9c6844583..9dced378f 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
@@ -65,10 +65,11 @@ public class FormDataTestFactory {
 						SUBFORM_KEY, SUBFORM_VALUE,
 						NESTED_LIST_WITH_STRINGS_KEY, NESTED_LIST_WITH_STRINGS,
 						NESTED_LIST_WITH_OBJECTS_KEY, NESTED_LIST_WITH_OBJECTS))
-				// TODO zweites Attachment aus der TestFactory entfernen und die entsprechenden
-				// Tests anpassen
 				.attachments(List.of(IncomingFileGroupTestFactory.create(),
-						IncomingFileGroupTestFactory.createBuilder().name(ATTACHMENT_GROUP_2).build()))
+						IncomingFileGroupTestFactory.createBuilder()
+								.name(ATTACHMENT_GROUP_2)
+								.file(IncomingFileTestFactory.create())
+								.build()))
 				.representations(List.of(IncomingFileTestFactory.create()));
 	}
 
diff --git a/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java
index 965ee6f81..3a2bcc042 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java
@@ -25,6 +25,7 @@ package de.ozgcloud.eingang.router;
 
 import java.util.List;
 
+import de.ozgcloud.eingang.common.formdata.*;
 import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
@@ -32,10 +33,6 @@ import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 import org.mapstruct.ReportingPolicy;
 
-import de.ozgcloud.eingang.common.formdata.Antragsteller;
-import de.ozgcloud.eingang.common.formdata.FormData;
-import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
-import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
 import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
 import de.ozgcloud.vorgang.vorgang.GrpcEingang;
@@ -50,15 +47,19 @@ import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle;
 		uses = { GrpcFormDataMapper.class, ServiceKontoMapper.class })
 public interface GrpcEingangMapper {
 
-	@Mapping(source = "antragsteller.data", target = "antragsteller.otherData")
-	@Mapping(source = "attachments", target = "attachmentsList")
-	@Mapping(source = "attachments", target = "numberOfAttachments")
-	@Mapping(source = "representations", target = "representationsList")
-	@Mapping(source = "representations", target = "numberOfRepresentations")
+	@Mapping(target = "antragsteller.otherData", source = "antragsteller.data")
+	@Mapping(target = "attachmentsList", source = "attachments")
+	@Mapping(target = "numberOfAttachments", source = "attachments")
+	@Mapping(target = "representationsList", source = "representations")
+	@Mapping(target = "numberOfRepresentations", source = "representations")
 	GrpcEingang toEingang(FormData formData);
 
-	default int listToSize(List<?> list) {
-		return list.size();
+	default int representationsToSize(List<IncomingFile> representations) {
+		return representations.size();
+	}
+
+	default int attachmentsToSize(List<IncomingFileGroup> attachments) {
+		return attachments.stream().mapToInt(group -> group.getFiles().size()).sum();
 	}
 
 	@Mapping(source = "files", target = "filesList")
diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
index 4150f6cef..d54bdf17b 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
@@ -106,7 +106,7 @@ class GrpcEingangMapperITCase {
 			@Test
 			void validateNumberOfAttachments() {
 
-				assertThat(eingang.getNumberOfAttachments()).isEqualTo(2);
+				assertThat(eingang.getNumberOfAttachments()).isEqualTo(3);
 			}
 
 			@Test
@@ -136,7 +136,7 @@ class GrpcEingangMapperITCase {
 			@Test
 			void validateGroup2AttachmentCount() {
 
-				assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(1);
+				assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(2);
 			}
 
 			@Test
diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
index b0348cc39..207b534c4 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
@@ -125,7 +125,7 @@ class GrpcEingangMapperTest {
 			void validateNumberOfAttachments() {
 				var eingang = toEingang();
 
-				assertThat(eingang.getNumberOfAttachments()).isEqualTo(2);
+				assertThat(eingang.getNumberOfAttachments()).isEqualTo(3);
 			}
 
 			@Test
@@ -139,14 +139,14 @@ class GrpcEingangMapperTest {
 			void validateGroup1AttachmentCount() {
 				var eingang = toEingang();
 
-				assertThat(eingang.getAttachmentsList().get(0).getFilesCount()).isEqualTo(1);
+				assertThat(eingang.getAttachmentsList().getFirst().getFilesCount()).isEqualTo(1);
 			}
 
 			@Test
 			void validateGroup1Attachment() {
 				var eingang = toEingang();
 
-				var attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0);
+				var attachment = eingang.getAttachmentsList().getFirst().getFilesList().getFirst();
 				assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID);
 				assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID);
 				assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME);
@@ -158,7 +158,7 @@ class GrpcEingangMapperTest {
 			void validateGroup2AttachmentCount() {
 				var eingang = toEingang();
 
-				assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(1);
+				assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(2);
 			}
 
 			@Test
diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
index 60206de34..773d545d6 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
@@ -184,7 +184,7 @@ class VorgangRemoteServiceTest {
 		void shouldCallUploadIncomingFile() {
 			vorgangCreator.uploadAttachments();
 
-			verify(vorgangCreator, times(2)).uploadIncomingFile(any(IncomingFile.class));
+			verify(vorgangCreator, times(3)).uploadIncomingFile(any(IncomingFile.class));
 		}
 
 		@Test
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java
index d7ea810f4..f548a7ca2 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java
@@ -126,8 +126,9 @@ public class FormSolutionsEngineBasedAdapterITCase {
 			void shouldMapAttachment() {
 				var data = engineAdapter.parseFormData(formData);
 
-				assertThat(data.getAttachments()).hasSize(2);
+				assertThat(data.getAttachments()).hasSize(1);
 				assertThat(data.getAttachments().getFirst()).isNotNull();
+				assertThat(data.getAttachments().getFirst().getFiles()).hasSize(2);
 			}
 		}
 
-- 
GitLab