diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java new file mode 100644 index 0000000000000000000000000000000000000000..cbccfedbf7f8c8279fba415c1b0e8eca195ced0d --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2024 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.vorgang.collaboration; + +import org.springframework.stereotype.Service; + +@Service +public class CollaborationService { + + public String createCollaborationVorgang(CollaborationRequest request) { + return "collaboration-vorgang-id"; + } +} 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 e3d2e963109c4246e2563943d7e89a8b1329fb25..ae61d19be4c643b9a22af13d4289f2011af20013 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,6 +25,8 @@ package de.ozgcloud.vorgang.vorgang; import org.springframework.data.domain.Page; +import de.ozgcloud.vorgang.collaboration.CollaborationRequestMapper; +import de.ozgcloud.vorgang.collaboration.CollaborationService; import io.grpc.stub.StreamObserver; import lombok.RequiredArgsConstructor; import net.devh.boot.grpc.server.service.GrpcService; @@ -42,6 +44,8 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase { private final FilterByMapper filterByMapper; private final IncomingFileMapper incomingFileMapper; private final IncomingFileGroupMapper incomingFileGroupMapper; + private final CollaborationService collaborationService; + private final CollaborationRequestMapper collaborationRequestMapper; @Override public void startCreation(GrpcCreateVorgangRequest request, StreamObserver<GrpcCreateVorgangResponse> responseObserver) { @@ -109,7 +113,13 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase { @Override public void createCollaborationVorgang(GrpcCreateCollaborationVorgangRequest request, StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver) { - responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().build()); + if (request.hasCollaborationRequest()) { + var collaborationRequest = collaborationRequestMapper.mapFrom(request.getCollaborationRequest()); + var collaborationVorgangId = collaborationService.createCollaborationVorgang(collaborationRequest); + responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(collaborationVorgangId).build()); + } else { + responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().build()); + } responseObserver.onCompleted(); } } \ No newline at end of file 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 e5b69c0882cab8ca25c093d510dcbc9a91791155..4934bc48fc97d00281c24368c22d473aa5bf5804 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,6 +41,11 @@ 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.GrpcCollaborationRequestTestFactory; import io.grpc.stub.StreamObserver; class GrpcVorgangServiceTest { @@ -73,6 +78,10 @@ class GrpcVorgangServiceTest { private IncomingFileMapper incomingFileMapper; @Mock private IncomingFileGroupMapper incomingFileGroupMapper; + @Mock + private CollaborationService collaborationService; + @Mock + private CollaborationRequestMapper collaborationRequestMapper; @Nested class TestCreate { @@ -334,31 +343,83 @@ class GrpcVorgangServiceTest { @Nested class TestCreateCollaborationVorgang { - private static final GrpcCreateCollaborationVorgangRequest REQUEST = GrpcCreateCollaborationVorgangRequest.newBuilder().build(); - @Mock private StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver; @Captor private ArgumentCaptor<GrpcCreateCollaborationVorgangResponse> responseCaptor; - @Test - void shouldCallOnNext() { - createCollaborationVorgang(); + @Nested + class TestCollaborationRequest { - verify(responseObserver).onNext(responseCaptor.capture()); - assertThat(responseCaptor.getValue()).isNotNull(); - } + private static final GrpcCollaborationRequest GRPC_COLLABORATION_REQUEST = GrpcCollaborationRequestTestFactory.create(); + 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(); - @Test - void shouldCallOnCompleted() { - createCollaborationVorgang(); + @BeforeEach + void init() { + when(collaborationRequestMapper.mapFrom(any())).thenReturn(COLLABORATION_REQUEST); + when(collaborationService.createCollaborationVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID); + } - verify(responseObserver).onCompleted(); + @Test + void shouldCallMapCollaborationRequest() { + createCollaborationVorgang(); + + verify(collaborationRequestMapper).mapFrom(GRPC_COLLABORATION_REQUEST); + } + + @Test + void shouldCallCreateCollaborationVorgang() { + createCollaborationVorgang(); + + verify(collaborationService).createCollaborationVorgang(COLLABORATION_REQUEST); + } + + @Test + void shouldCallOnNext() { + createCollaborationVorgang(); + + verify(responseObserver).onNext(responseCaptor.capture()); + assertThat(responseCaptor.getValue().getVorgangId()).isEqualTo(COLLABORATION_VORGANG_ID); + } + + @Test + void shouldCallOnCompleted() { + createCollaborationVorgang(); + + verify(responseObserver).onCompleted(); + } + + private void createCollaborationVorgang() { + service.createCollaborationVorgang(REQUEST, responseObserver); + } } - private void createCollaborationVorgang() { - service.createCollaborationVorgang(REQUEST, responseObserver); + @Nested + class TestEmptyRequest { + + @Test + void shouldCallOnNext() { + createCollaborationVorgang(); + + verify(responseObserver).onNext(responseCaptor.capture()); + assertThat(responseCaptor.getValue().getVorgangId()).isEmpty(); + } + + @Test + void shouldCallOnCompleted() { + createCollaborationVorgang(); + + verify(responseObserver).onCompleted(); + } + + private void createCollaborationVorgang() { + service.createCollaborationVorgang(GrpcCreateCollaborationVorgangRequest.newBuilder().build(), responseObserver); + } } + } } \ No newline at end of file