From 38c28b0f9ea7bcdb227eeefb49be6593173c67f4 Mon Sep 17 00:00:00 2001
From: "Zickermann, Jan" <jan.zickermann@dataport.de>
Date: Thu, 27 Jun 2024 16:15:43 +0200
Subject: [PATCH] OZG-5808 afm: Interpret requestId as vorgang nummer

---
 .../afm/AfmEngineBasedAdapter.java            | 11 +-----
 .../enginebased/afm/AfmHeaderMapper.java      |  3 +-
 .../afm/AfmEngineBasedAdapterTest.java        |  7 ----
 .../enginebased/afm/AfmHeaderMapperTest.java  |  9 ++++-
 .../de/ozgcloud/eingang/xta/XtaITCase.java    | 38 ++++++++++++++++---
 5 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java
index 5d7224c75..36a9a187a 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java
@@ -43,24 +43,15 @@ public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter {
 
 	@Override
 	public FormData parseFormData(FormData formData) {
-		var vorgangNummer = formData.getHeader().getVorgangNummer();
 		var processedFormData = intelliFormRepresentationAdapter.adaptByRepresentations(formData);
 
 		for (var mapper : mappers) {
 			processedFormData = mapper.parseFormData(processedFormData);
 		}
 
-		return removeProcessedData(addVorgangNummer(processedFormData, vorgangNummer));
+		return removeProcessedData(processedFormData);
 	}
 
-	private FormData addVorgangNummer(FormData formData, String vorgangNummer) {
-		return formData.toBuilder()
-				.header(formData.getHeader().toBuilder()
-						.vorgangNummer(vorgangNummer)
-						.build()
-				)
-				.build();
-	}
 
 	private FormData removeProcessedData(FormData formData) {
 		return FormDataUtils.from(formData)
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java
index 0f63ef368..42222ec81 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java
@@ -67,6 +67,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper {
 
 		var formHeaderBuilder = FormHeader.builder()
 				.requestId((String) headerDataMap.get(ID))
+				.vorgangNummer((String) headerDataMap.get(ID))
 				.createdAt(getCreatedAt(headerDataMap))
 				.formId((String) headerDataMap.get(FORM_ID))
 				.formName((String) headerDataMap.get(FORM))
@@ -105,4 +106,4 @@ class AfmHeaderMapper implements AfmEngineBasedMapper {
 				.remove(ServiceKontoFactory.REST_RESPONSE_NAME)
 				.build();
 	}
-}
\ No newline at end of file
+}
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java
index 609284d26..a99b67392 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java
@@ -100,13 +100,6 @@ class AfmEngineBasedAdapterTest {
 			assertThat(mappedFormData.getFormData()).doesNotContainKey(AfmAntragstellerMapper.POSTFACH_ID);
 		}
 
-		@DisplayName("should keep vorgang nummer")
-		@Test
-		void shouldKeepVorgangNummer() {
-			var mappedFormData = adapter.parseFormData(formData);
-
-			assertThat(mappedFormData.getHeader().getVorgangNummer()).isEqualTo(VORGANG_NUMMER);
-		}
 	}
 
 }
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java
index 7af0dcd5c..80a0e966b 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java
@@ -77,6 +77,13 @@ class AfmHeaderMapperTest {
 					assertThat(parsedFormData.getHeader().getRequestId()).isEqualTo(AfmHeaderTestFactory.ID);
 				}
 
+				@Test
+				void shouldMapVorgangNummer() {
+					var parsedFormData = parseFormData();
+
+					assertThat(parsedFormData.getHeader().getVorgangNummer()).isEqualTo(AfmHeaderTestFactory.ID);
+				}
+
 				@Test
 				void shouldMapCreatedAt() {
 					var parsedFormData = parseFormData();
@@ -189,4 +196,4 @@ class AfmHeaderMapperTest {
 		}
 	}
 
-}
\ No newline at end of file
+}
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 6a5705a31..e7525540e 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
@@ -13,6 +13,7 @@ import java.util.Optional;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.mockito.ArgumentCaptor;
@@ -137,15 +138,30 @@ class XtaITCase {
 			assertThat(organisationseinheitenId).isEqualTo("9795669");
 		}
 
-		@DisplayName("should have vorgang nummer")
-		@TestZipFileNames
-		void shouldHaveVorgangNummer(String zipFileName) {
+		@DisplayName("should have generated vorgang nummer for dFoerdermittel")
+		@Test
+		void shouldHaveVorgangsnummer() {
+			mockNachrichtenBroker("dfoerdermittel_with_anlage.zip");
+
+			runner.runGetXtaMessages();
+
+			var vorgangsNummer = captureEingang()
+					.getHeader()
+					.getVorgangNummer();
+			assertThat(vorgangsNummer).hasSameSizeAs("4627-TY3X");
+		}
+
+		@DisplayName("should have vorgang nummer for AFM")
+		@TestZipFileNamesFromAFM
+		void shouldHaveVorgangsnummerForAfm(String zipFileName) {
 			mockNachrichtenBroker(zipFileName);
 
 			runner.runGetXtaMessages();
 
-			var vorgangNummer = captureEingang().getHeader().getVorgangNummer();
-			assertThat(vorgangNummer).hasSize(9);
+			var vorgangsNummer = captureEingang()
+					.getHeader()
+					.getVorgangNummer();
+			assertThat(vorgangsNummer).hasSameSizeAs("20240404370530710707");
 		}
 
 		private GrpcEingang captureEingang() {
@@ -219,6 +235,18 @@ class XtaITCase {
 	@interface TestZipFileNamesWithoutPdf {
 	}
 
+	@Target({ ElementType.METHOD })
+	@Retention(RetentionPolicy.RUNTIME)
+	@ParameterizedTest
+	@ValueSource(strings = {
+			"mantelantrag_without_anlage.zip",
+			"brauchtumsfeuer_without_anlage.zip",
+			"mantelantrag_with_anlage.zip",
+			"brauchtumsfeuer_with_anlage.zip",
+	})
+	@interface TestZipFileNamesFromAFM {
+	}
+
 	@Target({ ElementType.METHOD })
 	@Retention(RetentionPolicy.RUNTIME)
 	@ParameterizedTest
-- 
GitLab