From 86ddf8dceeea198a3af41845e048aec644bc026f Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 5 Aug 2024 07:22:09 +0200
Subject: [PATCH] OZG-6259 get vorgang and trigger create collaboration vorgang

---
 ...=> CreateCollaborationVorgangRequest.java} |  7 ++-
 ...ateCollaborationVorgangRequestMapper.java} |  6 +-
 .../vorgang/vorgang/GrpcVorgangService.java   | 13 +++--
 .../collaboration/CollaborationITCase.java    |  6 +-
 .../CollaborationServiceTest.java             |  2 +-
 ...ollaborationVorgangRequestMapperTest.java} |  6 +-
 ...llaborationVorgangRequestTestFactory.java} | 12 ++--
 .../GrpcCollaborationRequestTestFactory.java  |  4 +-
 .../vorgang/GrpcVorgangServiceTest.java       | 58 ++++++++++++++++---
 9 files changed, 81 insertions(+), 33 deletions(-)
 rename vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/{CollaborationRequest.java => CreateCollaborationVorgangRequest.java} (88%)
 rename vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/{CollaborationRequestMapper.java => CreateCollaborationVorgangRequestMapper.java} (83%)
 rename vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/{CollaborationRequestMapperTest.java => CreateCollaborationVorgangRequestMapperTest.java} (79%)
 rename vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/{CollaborationRequestTestFactory.java => CreateCollaborationVorgangRequestTestFactory.java} (76%)

diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequest.java
similarity index 88%
rename from vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java
rename to vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequest.java
index 40a39954a..44f61fed6 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequest.java
@@ -23,14 +23,15 @@
  */
 package de.ozgcloud.vorgang.collaboration;
 
+import de.ozgcloud.vorgang.vorgang.Vorgang;
 import lombok.Builder;
 import lombok.Getter;
 
-@Builder
+@Builder(toBuilder = true)
 @Getter
-public class CollaborationRequest {
+public class CreateCollaborationVorgangRequest {
 
-	private String vorgangId;
+	private Vorgang vorgang;
 	private int collaborationLevel;
 	private String zustaendigeStelle;
 }
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestMapper.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java
similarity index 83%
rename from vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestMapper.java
rename to vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java
index 669c10135..28c23c3d2 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestMapper.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java
@@ -24,12 +24,14 @@
 package de.ozgcloud.vorgang.collaboration;
 
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
 import org.mapstruct.ReportingPolicy;
 
 import de.ozgcloud.vorgang.vorgang.GrpcCollaborationRequest;
 
 @Mapper(unmappedTargetPolicy = ReportingPolicy.WARN)
-public interface CollaborationRequestMapper {
+public interface CreateCollaborationVorgangRequestMapper {
 
-	CollaborationRequest mapFrom(GrpcCollaborationRequest grpcCollaborationRequest);
+	@Mapping(target = "vorgang", ignore = true)
+	CreateCollaborationVorgangRequest mapFrom(GrpcCollaborationRequest grpcCollaborationRequest);
 }
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java
index ae61d19be..7236e43b1 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java
@@ -25,8 +25,9 @@ package de.ozgcloud.vorgang.vorgang;
 
 import org.springframework.data.domain.Page;
 
-import de.ozgcloud.vorgang.collaboration.CollaborationRequestMapper;
 import de.ozgcloud.vorgang.collaboration.CollaborationService;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequest;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequestMapper;
 import io.grpc.stub.StreamObserver;
 import lombok.RequiredArgsConstructor;
 import net.devh.boot.grpc.server.service.GrpcService;
@@ -45,7 +46,7 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase {
 	private final IncomingFileMapper incomingFileMapper;
 	private final IncomingFileGroupMapper incomingFileGroupMapper;
 	private final CollaborationService collaborationService;
-	private final CollaborationRequestMapper collaborationRequestMapper;
+	private final CreateCollaborationVorgangRequestMapper createCollaborationVorgangRequestMapper;
 
 	@Override
 	public void startCreation(GrpcCreateVorgangRequest request, StreamObserver<GrpcCreateVorgangResponse> responseObserver) {
@@ -114,12 +115,16 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase {
 	public void createCollaborationVorgang(GrpcCreateCollaborationVorgangRequest request,
 			StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver) {
 		if (request.hasCollaborationRequest()) {
-			var collaborationRequest = collaborationRequestMapper.mapFrom(request.getCollaborationRequest());
-			var collaborationVorgangId = collaborationService.createCollaborationVorgang(collaborationRequest);
+			var collaborationVorgangId = collaborationService.createCollaborationVorgang(buildCreateCollaborationVorgangRequest(request));
 			responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(collaborationVorgangId).build());
 		} else {
 			responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().build());
 		}
 		responseObserver.onCompleted();
 	}
+
+	CreateCollaborationVorgangRequest buildCreateCollaborationVorgangRequest(GrpcCreateCollaborationVorgangRequest request) {
+		var vorgang = vorgangService.getById(request.getCollaborationRequest().getVorgangId());
+		return createCollaborationVorgangRequestMapper.mapFrom(request.getCollaborationRequest()).toBuilder().vorgang(vorgang).build();
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
index 4a89482ef..cb084194b 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
@@ -124,9 +124,9 @@ class CollaborationITCase {
 
 			var collaborationVorgang = loadCollaborationVorgang(vorgangId);
 			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getCollaborationLevel)
-					.isEqualTo(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
+					.isEqualTo(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL);
 			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getOrganisationsEinheitId)
-					.isEqualTo(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE);
+					.isEqualTo(CreateCollaborationVorgangRequestTestFactory.ZUSTAENDIGE_STELLE);
 			assertThat(collaborationVorgang.getClientAttributes()).isEmpty();
 		}
 
@@ -139,7 +139,7 @@ class CollaborationITCase {
 					.bodyObject(Map.of(
 							"titel", TITEL,
 							"anfrage", ANFRAGE,
-							"zustaendigeStelle", CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE
+							"zustaendigeStelle", CreateCollaborationVorgangRequestTestFactory.ZUSTAENDIGE_STELLE
 					))
 					.build();
 		}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
index 7e2ab2c24..ac0aa99d2 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
@@ -51,7 +51,7 @@ class CollaborationServiceTest {
 	@Nested
 	class TestCreateCollaborationVorgang {
 
-		private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
+		private static final CreateCollaborationVorgangRequest COLLABORATION_REQUEST = CreateCollaborationVorgangRequestTestFactory.create();
 		private static final String COLLABORATION_VORGANG_ID = "collaboratino-vorgang-id";
 
 		@Mock
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestMapperTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapperTest.java
similarity index 79%
rename from vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestMapperTest.java
rename to vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapperTest.java
index f47f2bea7..45e76253f 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestMapperTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapperTest.java
@@ -28,14 +28,14 @@ import static org.assertj.core.api.Assertions.*;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
 
-class CollaborationRequestMapperTest {
+class CreateCollaborationVorgangRequestMapperTest {
 
-	private final CollaborationRequestMapper mapper = Mappers.getMapper(CollaborationRequestMapper.class);
+	private final CreateCollaborationVorgangRequestMapper mapper = Mappers.getMapper(CreateCollaborationVorgangRequestMapper.class);
 
 	@Test
 	void shouldMapFromGrpc() {
 		var result = mapper.mapFrom(GrpcCollaborationRequestTestFactory.create());
 
-		assertThat(result).usingRecursiveComparison().isEqualTo(CollaborationRequestTestFactory.create());
+		assertThat(result).usingRecursiveComparison().ignoringFields("vorgang").isEqualTo(CreateCollaborationVorgangRequestTestFactory.create());
 	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestTestFactory.java
similarity index 76%
rename from vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java
rename to vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestTestFactory.java
index 2028349a6..d28796cd6 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestTestFactory.java
@@ -23,21 +23,21 @@
  */
 package de.ozgcloud.vorgang.collaboration;
 
-import de.ozgcloud.vorgang.collaboration.CollaborationRequest.CollaborationRequestBuilder;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequest.CreateCollaborationVorgangRequestBuilder;
 import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
 
-public class CollaborationRequestTestFactory {
+public class CreateCollaborationVorgangRequestTestFactory {
 
 	public static final int COLLABORATION_LEVEL = 1;
 	public static final String ZUSTAENDIGE_STELLE = "zustaendige-stelle";
 
-	public static CollaborationRequest create() {
+	public static CreateCollaborationVorgangRequest create() {
 		return createBuilder().build();
 	}
 
-	public static CollaborationRequestBuilder createBuilder() {
-		return CollaborationRequest.builder()
-				.vorgangId(VorgangTestFactory.ID)
+	public static CreateCollaborationVorgangRequestBuilder createBuilder() {
+		return CreateCollaborationVorgangRequest.builder()
+				.vorgang(VorgangTestFactory.create())
 				.zustaendigeStelle(ZUSTAENDIGE_STELLE)
 				.collaborationLevel(COLLABORATION_LEVEL);
 	}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java
index 67d6a8a18..0fabb30ae 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java
@@ -35,7 +35,7 @@ public class GrpcCollaborationRequestTestFactory {
 	public static GrpcCollaborationRequest.Builder createBuilder() {
 		return GrpcCollaborationRequest.newBuilder()
 				.setVorgangId(VorgangTestFactory.ID)
-				.setZustaendigeStelle(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE)
-				.setCollaborationLevel(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
+				.setZustaendigeStelle(CreateCollaborationVorgangRequestTestFactory.ZUSTAENDIGE_STELLE)
+				.setCollaborationLevel(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL);
 	}
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java
index 4934bc48f..11ec08b24 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java
@@ -41,10 +41,10 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.data.domain.Page;
 
-import de.ozgcloud.vorgang.collaboration.CollaborationRequest;
-import de.ozgcloud.vorgang.collaboration.CollaborationRequestMapper;
-import de.ozgcloud.vorgang.collaboration.CollaborationRequestTestFactory;
 import de.ozgcloud.vorgang.collaboration.CollaborationService;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequest;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequestMapper;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequestTestFactory;
 import de.ozgcloud.vorgang.collaboration.GrpcCollaborationRequestTestFactory;
 import io.grpc.stub.StreamObserver;
 
@@ -81,7 +81,7 @@ class GrpcVorgangServiceTest {
 	@Mock
 	private CollaborationService collaborationService;
 	@Mock
-	private CollaborationRequestMapper collaborationRequestMapper;
+	private CreateCollaborationVorgangRequestMapper createCollaborationVorgangRequestMapper;
 
 	@Nested
 	class TestCreate {
@@ -356,26 +356,26 @@ class GrpcVorgangServiceTest {
 			private static final GrpcCreateCollaborationVorgangRequest REQUEST = GrpcCreateCollaborationVorgangRequest.newBuilder()
 					.setCollaborationRequest(GRPC_COLLABORATION_REQUEST).build();
 			private static final String COLLABORATION_VORGANG_ID = "collaboration-vorgang-id";
-			private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
+			private static final CreateCollaborationVorgangRequest CREATE_COLLABORATION_VORGANG_REQUEST = CreateCollaborationVorgangRequestTestFactory.create();
 
 			@BeforeEach
 			void init() {
-				when(collaborationRequestMapper.mapFrom(any())).thenReturn(COLLABORATION_REQUEST);
+				doReturn(CREATE_COLLABORATION_VORGANG_REQUEST).when(service).buildCreateCollaborationVorgangRequest(any());
 				when(collaborationService.createCollaborationVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID);
 			}
 
 			@Test
-			void shouldCallMapCollaborationRequest() {
+			void shouldCallBuildCreateCollaborationVorgangRequest() {
 				createCollaborationVorgang();
 
-				verify(collaborationRequestMapper).mapFrom(GRPC_COLLABORATION_REQUEST);
+				verify(service).buildCreateCollaborationVorgangRequest(REQUEST);
 			}
 
 			@Test
 			void shouldCallCreateCollaborationVorgang() {
 				createCollaborationVorgang();
 
-				verify(collaborationService).createCollaborationVorgang(COLLABORATION_REQUEST);
+				verify(collaborationService).createCollaborationVorgang(CREATE_COLLABORATION_VORGANG_REQUEST);
 			}
 
 			@Test
@@ -422,4 +422,44 @@ class GrpcVorgangServiceTest {
 		}
 
 	}
+
+	@Nested
+	class TestBuildCreateCollaborationVorgangRequest {
+
+		private static final GrpcCollaborationRequest GRPC_COLLABORATION_REQUEST = GrpcCollaborationRequestTestFactory.create();
+		private static final CreateCollaborationVorgangRequest CREATE_COLLABORATION_VORGANG_REQUEST = CreateCollaborationVorgangRequestTestFactory.create();
+		private static final Vorgang VORGANG = VorgangTestFactory.create();
+
+		@BeforeEach
+		void init() {
+			when(createCollaborationVorgangRequestMapper.mapFrom(any())).thenReturn(CREATE_COLLABORATION_VORGANG_REQUEST);
+			when(vorgangService.getById(anyString())).thenReturn(VORGANG);
+		}
+
+		@Test
+		void shouldCallGetVorgang() {
+			buildCreateCollaborationVorgangRequest();
+
+			verify(vorgangService).getById(VorgangTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallRequestMapper() {
+			buildCreateCollaborationVorgangRequest();
+
+			verify(createCollaborationVorgangRequestMapper).mapFrom(GRPC_COLLABORATION_REQUEST);
+		}
+
+		@Test
+		void shouldSetVorgang() {
+			var result = buildCreateCollaborationVorgangRequest();
+
+			assertThat(result.getVorgang()).isSameAs(VORGANG);
+		}
+
+		private CreateCollaborationVorgangRequest buildCreateCollaborationVorgangRequest() {
+			return service.buildCreateCollaborationVorgangRequest(GrpcCreateCollaborationVorgangRequest.newBuilder()
+					.setCollaborationRequest(GRPC_COLLABORATION_REQUEST).build());
+		}
+	}
 }
\ No newline at end of file
-- 
GitLab