diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java index e359c1c58d2b85fc2326c74ac848ef4287f5d972..2a50225927053555819bbd1ac937ed0598088dd4 100644 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java @@ -31,7 +31,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.protobuf.ByteString; @@ -55,25 +54,28 @@ import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.stub.CallStreamObserver; import io.grpc.stub.StreamObserver; +import lombok.AllArgsConstructor; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @Log4j2 +@AllArgsConstructor @Service public class VorgangRemoteService { - @Autowired - private VorgangManagerServerResolver vorgangManagerServerResolver; + private final VorgangManagerServerResolver vorgangManagerServerResolver; - public String createVorgang(FormData formData, GrpcEingang eingang, Optional<String> organisationsEinheitenId) { + private final GrpcEingangMapper grpcEingangMapper; + + public String createVorgang(FormData formData, Optional<String> organisationsEinheitenId) { var vorgangServiceStub = getVorgangServiceStub(organisationsEinheitenId); var binaryFileServiceStub = getBinaryFileServiceStub(organisationsEinheitenId); logConnection(organisationsEinheitenId, vorgangServiceStub.get()); try { - return createVorgang(formData, eingang, vorgangServiceStub.get(), binaryFileServiceStub.get()); + return createVorgang(formData, grpcEingangMapper.toEingang(formData), vorgangServiceStub.get(), binaryFileServiceStub.get()); } finally { finishStubConnections(List.of(vorgangServiceStub, binaryFileServiceStub)); } diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java index 9d617ae52e65f0b17720abb50d13aac388ff430e..f93955719be0545b3d73e133feeb4cd72850bdd8 100644 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java @@ -25,25 +25,29 @@ package de.ozgcloud.eingang.router; import java.util.Optional; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import lombok.AllArgsConstructor; +@AllArgsConstructor @Service public class VorgangService { - @Autowired - private VorgangRemoteService remoteService; - - @Autowired - private GrpcEingangMapper grpcEingangMapper; + private final VorgangRemoteService remoteService; public String createVorgang(FormData formData) { - var eingang = grpcEingangMapper.toEingang(formData); - var organisationsEinheitenId = Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId); + var preparedFormData = preserveConsistency(formData); + + return remoteService.createVorgang(preparedFormData, getOrganisationsEinheitId(preparedFormData)); + } + + private Optional<String> getOrganisationsEinheitId(FormData formData) { + return Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId); + } - return remoteService.createVorgang(formData, eingang, organisationsEinheitenId); + FormData preserveConsistency(FormData formData) { + return null; } } \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java index 465b61fcdbe88fc611f3990c2a6ec00d5073ab96..993c973ca2f71c645734db5ab5039151b9a0543f 100644 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java @@ -79,6 +79,8 @@ class VorgangRemoteServiceTest { private VorgangRemoteService remoteService; @Mock private VorgangManagerServerResolver resolver; + @Mock + private GrpcEingangMapper eingangMapper; private VorgangCreator vorgangCreator; @@ -115,6 +117,8 @@ class VorgangRemoteServiceTest { when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(managableBinaryFileServiceStub); when(managableBinaryFileServiceStub.get()).thenReturn(binaryFileServiceStub); + when(eingangMapper.toEingang(any())).thenReturn(eingang); + doNothing().when(remoteService).logConnection(any(), any()); doNothing().when(remoteService).finishStubConnections(any()); } @@ -151,6 +155,13 @@ class VorgangRemoteServiceTest { verify(remoteService).createVorgang(formData, eingang, vorgangServiceStub, binaryFileServiceStub); } + @Test + void shouldCallEingangMapper() { + createVorgang(); + + verify(eingangMapper).toEingang(formData); + } + @Test void shouldFinishStubConnection() { createVorgang(); @@ -192,7 +203,7 @@ class VorgangRemoteServiceTest { @SneakyThrows private String createVorgang() { - return remoteService.createVorgang(formData, eingang, organisationsEinheitId); + return remoteService.createVorgang(formData, organisationsEinheitId); } } diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java index 09a272ead29a6ef327ceb514b4305870459a0b8b..5425c19d615ab4d6943459f2e0c3bf13ae3cffae 100644 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java @@ -23,24 +23,25 @@ */ package de.ozgcloud.eingang.router; -import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; 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.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Spy; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; -import de.ozgcloud.vorgang.vorgang.GrpcEingang; class VorgangServiceTest { + @Spy @InjectMocks private VorgangService service; @Mock @@ -48,26 +49,45 @@ class VorgangServiceTest { @Mock private VorgangRemoteService remoteService; + @DisplayName("Create vorgang") @Nested class TestCreateVorgang { - private FormData formData = FormDataTestFactory.create(); - private GrpcEingang eingang = GrpcEingang.newBuilder().build(); + private final FormData formData = FormDataTestFactory.create(); + private final FormData preservedFormData = FormDataTestFactory.create(); @BeforeEach void mockEingangMapper() { - when(eingangMapper.toEingang(any())).thenReturn(eingang); + doReturn(preservedFormData).when(service).preserveConsistency(formData); + } + + @Test + void shouldPreserverConsistency() { + callCreateVorgang(); + + verify(service).preserveConsistency(formData); } @Test void shouldCallRemoteService() { - callCreateVorgangNew(); + callCreateVorgang(); - verify(remoteService).createVorgang(formData, eingang, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); + verify(remoteService).createVorgang(preservedFormData, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); } - private void callCreateVorgangNew() { + private void callCreateVorgang() { service.createVorgang(formData); } } + + @DisplayName("Preserve consistency") + @Nested + class TestPreserveConsistency { + + @DisplayName("should set serviceKonto to null if no postfachAddress exists") + @Test + void shouldSetServiceKontoToNull() { + + } + } } \ No newline at end of file