From ee192e1d0ab2edbc1e51bdac99e4e2dafded3ae4 Mon Sep 17 00:00:00 2001
From: Felix Reichenbach <felix.reichenbach@mgm-tp.com>
Date: Mon, 17 Mar 2025 11:10:34 +0100
Subject: [PATCH] OZG-7573 implement IncomingFileGroupMapper and clean up
 TestFactory

---
 .../IncomingFileGroupTestFactory.java         | 21 ++++----------
 .../formdata/IncomingFileTestFactory.java     |  2 +-
 .../FormCycleFormDataTestFactory.java         |  3 +-
 .../formcycle/FormDataControllerITCase.java   | 13 ++++-----
 .../formcycle/FormDataControllerTest.java     |  2 +-
 .../forwarder/IncomingFileGroupMapper.java    |  7 ++++-
 .../IncomingFileGroupMapperTest.java          | 29 +++++++++++++++++++
 7 files changed, 50 insertions(+), 27 deletions(-)
 create mode 100644 forwarder/src/test/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapperTest.java

diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java
index ebabd58ef..62d245773 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java
@@ -25,23 +25,12 @@ package de.ozgcloud.eingang.common.formdata;
 
 import java.util.List;
 
-public class IncomingFileGroupTestFactory {
-	public static final String XDOMEA_XML_NAME = "xdomea.xml";
-	public static final String REPR_XML_NAME = "repr.xml";
-	public static final String REPR_PDF_NAME = "repr.pdf";
-	public static final String ATTATCHMENT_XML_NAME = "att.xml";
-	public static final String ATTATCHMENT_PNG_NAME = "att.png";
-	public static final String ATTATCHMENT_PDF_NAME = "att.pdf";
-
-	public static final String INCOMING_FILE_ID = "xxx";
-	public static final String ID = "id";
-	public static final String FILE_REF1 = "FileRef1";
-	public static final String VENDOR_ID_XXX = "vendorId:xxx";
+import com.thedeanda.lorem.LoremIpsum;
 
-	public static final String NAME = "Ausweis";
+public class IncomingFileGroupTestFactory {
 
-	public static final IncomingFile INCOMING_FILE = IncomingFile.builder().id(INCOMING_FILE_ID).vendorId(VENDOR_ID_XXX).build();
-	public static final List<IncomingFileGroup> FILE_GROUPS = List.of(IncomingFileGroup.builder().files(List.of(INCOMING_FILE)).build());
+	public static final String NAME = LoremIpsum.getInstance().getWords(1);
+	public static final List<IncomingFile> INCOMING_FILES = List.of(IncomingFileTestFactory.create());
 
 	public static IncomingFileGroup create() {
 		return createBuilder().build();
@@ -50,7 +39,7 @@ public class IncomingFileGroupTestFactory {
 	public static IncomingFileGroup.IncomingFileGroupBuilder createBuilder() {
 		return IncomingFileGroup.builder()
 				.name(NAME)
-				.files(List.of(IncomingFileTestFactory.create()));
+				.files(INCOMING_FILES);
 	}
 
 }
diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java
index 03fd99127..f377a61cd 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java
@@ -35,7 +35,7 @@ import lombok.SneakyThrows;
 public class IncomingFileTestFactory {
 
 	public static final String ID = UUID.randomUUID().toString();
-	public static final String VENDOR_ID = IncomingFileGroupTestFactory.VENDOR_ID_XXX;
+	public static final String VENDOR_ID = "vendorId:xxx";
 	public static final String NAME = "XML-Daten.xml";
 	public static final String CONTENT_TYPE = "application/xml";
 	public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE;
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java
index 066b77ac5..edff3cd6c 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java
@@ -24,6 +24,7 @@
 package de.ozgcloud.eingang.formcycle;
 
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
+import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
 import de.ozgcloud.eingang.formcycle.FormCycleFormData.Builder;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
 import de.ozgcloud.vorgang.vorgang.GrpcFormData;
@@ -43,7 +44,7 @@ public class FormCycleFormDataTestFactory {
 				.setFormData(GrpcFormDataTestFactory.create())
 				.addAttachmentGroup(FormCycleAttachmentGroup.newBuilder()
 						.setName(IncomingFileGroupTestFactory.NAME)
-						.addFileId(IncomingFileGroupTestFactory.VENDOR_ID_XXX)
+						.addFileId(IncomingFileTestFactory.VENDOR_ID)
 						.build());
 	}
 
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java
index f63d7df6e..61daa9f4a 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java
@@ -37,7 +37,6 @@ import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 
 import de.ozgcloud.common.test.ITCase;
-import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
 import de.ozgcloud.eingang.semantik.SemantikAdapter;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
@@ -46,11 +45,11 @@ import de.ozgcloud.vorgang.vorgang.GrpcSubForm;
 import lombok.SneakyThrows;
 
 @ITCase
-//@SpringBootTest(properties = {
-//		"grpc.client.vorgang-manager-local.address=static://127.0.0.1:9090",
-//		"grpc.client.vorgang-manager-local.negotiationType=PLAINTEXT"
-//})
-//@ActiveProfiles("itcase")
+// @SpringBootTest(properties = {
+// "grpc.client.vorgang-manager-local.address=static://127.0.0.1:9090",
+// "grpc.client.vorgang-manager-local.negotiationType=PLAINTEXT"
+// })
+// @ActiveProfiles("itcase")
 @AutoConfigureMockMvc
 class FormDataControllerITCase {
 
@@ -76,7 +75,7 @@ class FormDataControllerITCase {
 							.file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData()))
 							.file(IncomingFileTestFactory.asMultipartFile("representations"))
 							.file(asMultipartFile("attachments",
-									createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX + "__" + NAME).build())));
+									createBuilder().name(IncomingFileTestFactory.VENDOR_ID + "__" + NAME).build())));
 		}
 	}
 
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
index af16a675d..e9fdd387f 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
@@ -239,7 +239,7 @@ class FormDataControllerTest {
 							.file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData()))
 							.file(IncomingFileTestFactory.asMultipartFile("representations"))
 							.file(asMultipartFile("attachments",
-									createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX).build())));
+									createBuilder().name(IncomingFileTestFactory.VENDOR_ID).build())));
 		}
 	}
 
diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapper.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapper.java
index 7f35ef41d..024d2c03e 100644
--- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapper.java
+++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapper.java
@@ -11,5 +11,10 @@ import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 @Mapper
 public interface IncomingFileGroupMapper {
 
-	IncomingFileGroup fromMapEntry(Map.Entry<String, List<IncomingFile>> entry); // TODO: Implement this method
+	default IncomingFileGroup fromMapEntry(Map.Entry<String, List<IncomingFile>> entry) {
+		return IncomingFileGroup.builder()
+				.name(entry.getKey())
+				.files(entry.getValue())
+				.build();
+	}
 }
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapperTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapperTest.java
new file mode 100644
index 000000000..acdc39b91
--- /dev/null
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/IncomingFileGroupMapperTest.java
@@ -0,0 +1,29 @@
+package de.ozgcloud.eingang.forwarder;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.Map;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
+
+class IncomingFileGroupMapperTest {
+
+	private final IncomingFileGroupMapper mapper = Mappers.getMapper(IncomingFileGroupMapper.class);
+
+	@Nested
+	class TestFromMapEntry {
+
+		@Test
+		void shouldMapToIncomingFileGroup() {
+			var entry = Map.entry(IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.INCOMING_FILES);
+
+			var incomingFileGroup = mapper.fromMapEntry(entry);
+
+			assertThat(incomingFileGroup).usingRecursiveComparison().isEqualTo(IncomingFileGroupTestFactory.create());
+		}
+	}
+}
-- 
GitLab