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 40a39954ab98c3b284c3a19817e9277f893d123b..44f61fed6d4ea63527907176ab79f790fdc534d0 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 669c10135e95e316b8ded21463b24e5dbee82726..28c23c3d257a9bc371fcd54dd1eaed57cd2166a7 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 ae61d19be4c643b9a22af13d4289f2011af20013..7236e43b1cc188d06727af667f443baf5e82644d 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 4a89482ef8b80bd443d1d30a9da2b881d12fb491..cb084194b17f44d6b59ed715b913ff752d7d1d8c 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 7e2ab2c24e670d8205c28280e68076d5c5a8cafd..ac0aa99d2a8ddef7e38966209faf2e00802f5b08 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 f47f2bea7692a5ce1116bd07da8f70f6874dbf8d..45e76253f7a9e06bd7c221d1a7e4c0a56e46ae32 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 2028349a693227ddea0620ec67b52dc5ed56bd3f..d28796cd63ae8ac3ac7bf3134eb32a93354b8571 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 67d6a8a18a8c2eb865d9205e4033ee0139e2ccae..0fabb30ae99f774e9acb34f7e10ecba319980ee1 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 4934bc48fc97d00281c24368c22d473aa5bf5804..11ec08b24c25f767417dc0fa6ba38ffe6ef6527f 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