From 596040cd9e4fcf2b5dc887866be0439142b07546 Mon Sep 17 00:00:00 2001
From: Krzysztof Witukiewicz <krzysztof.witukiewicz@mgm-tp.com>
Date: Tue, 18 Feb 2025 16:30:11 +0100
Subject: [PATCH] OZG-7608 OZG-7736 Complete mapper for OzgCloudVorgangStub

---
 .../apilib/vorgang/OzgCloudVorgangHeader.java |  1 +
 .../grpc/OzgCloudVorgangHeaderMapper.java     | 37 +++++++++++++++++++
 .../grpc/OzgCloudVorgangStubMapper.java       |  7 ++--
 .../OzgCloudVorgangStubTestFactory.java       |  1 +
 .../grpc/OzgCloudVorgangHeaderMapperTest.java | 32 ++++++++++++++++
 .../grpc/OzgCloudVorgangStubMapperTest.java   | 28 +++++++++-----
 6 files changed, 93 insertions(+), 13 deletions(-)
 create mode 100644 api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java
 create mode 100644 api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java

diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java
index 7737b3d..703f872 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java
@@ -32,6 +32,7 @@ import lombok.ToString;
 
 @Builder
 @Getter
+@ToString
 public class OzgCloudVorgangHeader {
 
 	private OzgCloudVorgangStatus status;
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java
new file mode 100644
index 0000000..032f2fa
--- /dev/null
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.apilib.vorgang.grpc;
+
+import org.mapstruct.Mapper;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudUserIdMapper;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeader;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStatusMapper;
+import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
+
+@Mapper(uses = { OzgCloudVorgangStatusMapper.class, OzgCloudUserIdMapper.class })
+public interface OzgCloudVorgangHeaderMapper {
+
+	OzgCloudVorgangHeader fromGrpc(GrpcVorgangHeader vorgang);
+}
diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java
index e7e046b..dd3d7a1 100644
--- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java
+++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java
@@ -30,12 +30,11 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub;
 import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
 
-@Mapper(uses = OzgCloudVorgangIdMapper.class)
+@Mapper(uses = { OzgCloudVorgangIdMapper.class, OzgCloudVorgangHeaderMapper.class })
 public interface OzgCloudVorgangStubMapper {
 
-	@Mapping(target = "header", ignore = true)
-	@Mapping(target = "vorgangNummer", ignore = true)
+	@Mapping(target = "vorgangNummer", source = "nummer")
 	@Mapping(target = "vorgangName", source = "name")
+	@Mapping(target = "header", source = ".")
 	OzgCloudVorgangStub fromGrpc(GrpcVorgangHeader vorgang);
-
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java
index a7fa49c..3790b25 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java
@@ -34,6 +34,7 @@ public class OzgCloudVorgangStubTestFactory {
 			.id(OzgCloudVorgangTestFactory.ID)
 			.version(OzgCloudVorgangTestFactory.VERSION)
 			.vorgangName(OzgCloudVorgangTestFactory.VORGANG_NAME)
+			.vorgangNummer(OzgCloudVorgangTestFactory.VORGANG_NUMMER)
 			.header(OzgCloudVorgangHeaderTestFactory.create());
 	}
 }
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java
new file mode 100644
index 0000000..23b97de
--- /dev/null
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java
@@ -0,0 +1,32 @@
+package de.ozgcloud.apilib.vorgang.grpc;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeader;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeaderTestFactory;
+
+class OzgCloudVorgangHeaderMapperTest {
+
+	private final OzgCloudVorgangHeaderMapper mapper = Mappers.getMapper(OzgCloudVorgangHeaderMapper.class);
+
+	@Nested
+	class TestFromGrpc {
+
+		@Test
+		void shouldMap() {
+			var mapped = mapper.fromGrpc(GrpcVorgangHeaderTestFactory.create());
+
+			assertThat(mapped).usingRecursiveComparison().isEqualTo(vorgangHeaderWithoutServiceKonto());
+		}
+
+		private static OzgCloudVorgangHeader vorgangHeaderWithoutServiceKonto() {
+			return OzgCloudVorgangHeaderTestFactory.createBuilder()
+				.serviceKonto(null)
+				.build();
+		}
+	}
+}
diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java
index 699dac3..59fee9b 100644
--- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java
+++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java
@@ -25,24 +25,34 @@ package de.ozgcloud.apilib.vorgang.grpc;
 
 import static org.assertj.core.api.Assertions.*;
 
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
 
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeaderTestFactory;
+import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStubTestFactory;
 
 class OzgCloudVorgangStubMapperTest {
 
-	private OzgCloudVorgangStubMapper mapper = Mappers.getMapper(OzgCloudVorgangStubMapper.class);
+	private final OzgCloudVorgangStubMapper mapper = Mappers.getMapper(OzgCloudVorgangStubMapper.class);
 
-	@Test
-	void shouldMapStubFields() {
-		var expected = OzgCloudVorgangStubTestFactory.createBuilder()
-			.header(null)
-			.vorgangNummer(null)
-			.build();
+	@Nested
+	class TestFromGrpc {
 
-		var mapped = mapper.fromGrpc(GrpcVorgangHeaderTestFactory.create());
+		@Test
+		void shouldMap() {
+			var mapped = mapper.fromGrpc(GrpcVorgangHeaderTestFactory.create());
 
-		assertThat(mapped).usingRecursiveComparison().isEqualTo(expected);
+			assertThat(mapped).usingRecursiveComparison().isEqualTo(vorgangStubWithoutServiceKonto());
+		}
+
+		private static OzgCloudVorgangStub vorgangStubWithoutServiceKonto() {
+			return OzgCloudVorgangStubTestFactory.createBuilder()
+				.header(OzgCloudVorgangHeaderTestFactory.createBuilder()
+					.serviceKonto(null)
+					.build())
+				.build();
+		}
 	}
 }
-- 
GitLab