From 930b062c7ffe0526e0818a446433537c0c7616cf Mon Sep 17 00:00:00 2001
From: "Zickermann, Jan" <jan.zickermann@dataport.de>
Date: Thu, 4 Jul 2024 13:31:32 +0200
Subject: [PATCH] OZG-5776 fim: Put xml-form into `fim_files` attachment group

---
 .../eingang/fim/FimXtaMessageHandler.java     | 10 ++++--
 .../xta/RepresentationsAttachmentsPair.java   |  3 +-
 .../eingang/fim/FimXtaMessageHandlerTest.java | 31 ++++++++++++++++---
 .../de/ozgcloud/eingang/xta/XtaITCase.java    |  6 ++--
 4 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/fim/FimXtaMessageHandler.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/fim/FimXtaMessageHandler.java
index a47b8743b..7920a1fbd 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/fim/FimXtaMessageHandler.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/fim/FimXtaMessageHandler.java
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Component;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
 import de.ozgcloud.eingang.xta.RepresentationsAttachmentsPair;
 import de.ozgcloud.eingang.xta.XtaMessageHandler;
@@ -20,6 +21,8 @@ import de.ozgcloud.eingang.xta.XtaMessageMetaData;
 public class FimXtaMessageHandler implements XtaMessageHandler {
 	static final String ALL_FIM_MESSAGES_PREFIX = "fim.";
 
+	static final String FIM_FILE_GROUP_NAME = "fim_files";
+
 	@Autowired
 	private XtaMessageMapper xtaMessageMapper;
 
@@ -37,8 +40,11 @@ public class FimXtaMessageHandler implements XtaMessageHandler {
 
 	RepresentationsAttachmentsPair getRepresentationsAttachmentsPair(List<IncomingFile> incomingFiles) {
 		return RepresentationsAttachmentsPair.builder()
-				.representations(incomingFiles)
-				.attachments(emptyList())
+				.representations(emptyList())
+				.attachment(IncomingFileGroup.builder()
+						.name(FIM_FILE_GROUP_NAME)
+						.files(incomingFiles)
+						.build())
 				.build();
 	}
 
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java
index 0639e78e5..6236d705c 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java
@@ -5,10 +5,11 @@ import java.util.List;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 import lombok.Builder;
+import lombok.Singular;
 
 @Builder
 public record RepresentationsAttachmentsPair(
 		List<IncomingFile> representations,
-		List<IncomingFileGroup> attachments
+		@Singular List<IncomingFileGroup> attachments
 ) {
 }
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/fim/FimXtaMessageHandlerTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/fim/FimXtaMessageHandlerTest.java
index c7c68852d..7884dc8da 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/fim/FimXtaMessageHandlerTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/fim/FimXtaMessageHandlerTest.java
@@ -1,5 +1,6 @@
 package de.ozgcloud.eingang.fim;
 
+import static de.ozgcloud.eingang.fim.FimXtaMessageHandler.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
@@ -15,6 +16,7 @@ import org.mockito.Spy;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
 import de.ozgcloud.eingang.xta.RepresentationsAttachmentsPair;
 import de.ozgcloud.eingang.xta.XtaMessageMapper;
@@ -77,20 +79,41 @@ class FimXtaMessageHandlerTest {
 			incomingFiles = List.of(incomingFile1, incomingFile2);
 		}
 
-		@DisplayName("should return representations")
+		@DisplayName("should return empty representations")
 		@Test
 		void shouldReturnRepresentations() {
 			var result = handler.getRepresentationsAttachmentsPair(incomingFiles);
 
-			assertThat(result.representations()).containsExactly(incomingFile1, incomingFile2);
+			assertThat(result.representations()).isEmpty();
 		}
 
-		@DisplayName("should return empty attachments")
+		@DisplayName("should return one attachment group")
 		@Test
 		void shouldReturnEmptyAttachments() {
 			var result = handler.getRepresentationsAttachmentsPair(incomingFiles);
 
-			assertThat(result.attachments()).isEmpty();
+			assertThat(result.attachments()).hasSize(1);
+		}
+
+		@DisplayName("should have name")
+		@Test
+		void shouldHaveName() {
+			var group = firstGroup();
+
+			assertThat(group.getName()).isEqualTo(FIM_FILE_GROUP_NAME);
+		}
+
+		@DisplayName("should have attachment files")
+		@Test
+		void shouldHaveAttachmentFiles() {
+			var result = firstGroup();
+
+			assertThat(result.getFiles()).containsExactly(incomingFile1, incomingFile2);
+		}
+
+		private IncomingFileGroup firstGroup() {
+			var result = handler.getRepresentationsAttachmentsPair(incomingFiles);
+			return result.attachments().getFirst();
 		}
 	}
 
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java
index fc8db014a..b328ff52c 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java
@@ -178,15 +178,15 @@ class XtaITCase {
 			assertThat(vorgangNummer).hasSize(9);
 		}
 
-		@DisplayName("should have one representation for FIM")
+		@DisplayName("should have one attachment for FIM")
 		@Test
-		void shouldHaveOneRepresentationForFim() {
+		void shouldHaveOneAttachmentForFim() {
 			mockNachrichtenBroker("versammlungsanzeige.xml");
 
 			runner.runGetXtaMessages();
 
 			var eingang = captureEingang();
-			assertThat(eingang.getNumberOfRepresentations()).isEqualTo(1);
+			assertThat(eingang.getNumberOfAttachments()).isEqualTo(1);
 		}
 
 		private GrpcEingang captureEingang() {
-- 
GitLab