Skip to content
Snippets Groups Projects
Commit 7dfb7f91 authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-7573 OZG-7929 forwarding call VorgangService

parent 6c95fb6e
No related branches found
No related tags found
1 merge request!9Ozg 7573 forward vorgang
...@@ -86,6 +86,12 @@ ...@@ -86,6 +86,12 @@
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
</dependency> </dependency>
<!-- Test -->
<dependency>
<groupId>de.ozgcloud.eingang</groupId>
<artifactId>common</artifactId>
<type>test-jar</type>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -34,5 +34,5 @@ public class RouteCriteria { ...@@ -34,5 +34,5 @@ public class RouteCriteria {
private Optional<String> gemeindeSchluessel; private Optional<String> gemeindeSchluessel;
private Optional<String> webserviceUrl; private Optional<String> webserviceUrl;
private Optional<String> organisationseinheitenId; private Optional<String> organisationEinheitId;
} }
...@@ -27,12 +27,14 @@ import java.util.Optional; ...@@ -27,12 +27,14 @@ import java.util.Optional;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
@Mapper @Mapper
interface RouteCriteriaMapper { interface RouteCriteriaMapper {
@Mapping(target = "organisationEinheitId", source = "organisationseinheitenId")
RouteCriteria fromGrpc(GrpcRouteCriteria grpcRouteCriteria); RouteCriteria fromGrpc(GrpcRouteCriteria grpcRouteCriteria);
default Optional<String> wrapWithOptional(String val) { default Optional<String> wrapWithOptional(String val) {
......
...@@ -23,24 +23,21 @@ ...@@ -23,24 +23,21 @@
*/ */
package de.ozgcloud.eingang.forwarder; package de.ozgcloud.eingang.forwarder;
import org.springframework.beans.factory.annotation.Autowired;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse;
import de.ozgcloud.eingang.router.GrpcEingangMapper; import de.ozgcloud.eingang.router.GrpcEingangMapper;
import io.grpc.stub.StreamObserver; import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
import net.devh.boot.grpc.server.service.GrpcService; import net.devh.boot.grpc.server.service.GrpcService;
@GrpcService @GrpcService
@RequiredArgsConstructor
public class RouteForwardingGrpcService extends RouteForwardingServiceGrpc.RouteForwardingServiceImplBase { public class RouteForwardingGrpcService extends RouteForwardingServiceGrpc.RouteForwardingServiceImplBase {
@Autowired private final RouteForwardingService service;
private RouteForwardingService service; private final RouteCriteriaMapper criteriaMapper;
@Autowired
private RouteCriteriaMapper criteriaMapper;
@Autowired private final GrpcEingangMapper eingangMapper;
private GrpcEingangMapper eingangMapper;
@Override @Override
public void routeForwarding(GrpcRouteForwardingRequest request, StreamObserver<GrpcRouteForwardingResponse> responseObserver) { public void routeForwarding(GrpcRouteForwardingRequest request, StreamObserver<GrpcRouteForwardingResponse> responseObserver) {
......
...@@ -26,11 +26,23 @@ package de.ozgcloud.eingang.forwarder; ...@@ -26,11 +26,23 @@ package de.ozgcloud.eingang.forwarder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
import de.ozgcloud.eingang.router.VorgangService;
import lombok.RequiredArgsConstructor;
@Service @Service
@RequiredArgsConstructor
class RouteForwardingService { class RouteForwardingService {
private final VorgangService vorgangService;
public void route(RouteCriteria criteria, FormData formData) { public void route(RouteCriteria criteria, FormData formData) {
//FIXME implement me vorgangService.createVorgang(formData.toBuilder()
.clearZustaendigeStelles()
.zustaendigeStelle(ZustaendigeStelle.builder()
.organisationseinheitenId(criteria.getOrganisationEinheitId()
.orElseThrow(() -> new UnsupportedOperationException("OrganisationseinheitId is required!")))
.build())
.build());
} }
} }
...@@ -31,7 +31,7 @@ public class RouteCriteriaTestFactory { ...@@ -31,7 +31,7 @@ public class RouteCriteriaTestFactory {
public static final String GEMEINDE_SCHLUSSEL = "0815"; public static final String GEMEINDE_SCHLUSSEL = "0815";
public static final String WEBSERVICE_URL = "http://nimmerland.by.kop-cloud.de/ws"; public static final String WEBSERVICE_URL = "http://nimmerland.by.kop-cloud.de/ws";
public static final String ORGANISATIONSEINHEITEN_ID = "4711"; public static final String ORGANISATION_EINHEIT_ID = "4711";
public static RouteCriteria create() { public static RouteCriteria create() {
return createBuilder().build(); return createBuilder().build();
...@@ -41,7 +41,7 @@ public class RouteCriteriaTestFactory { ...@@ -41,7 +41,7 @@ public class RouteCriteriaTestFactory {
return RouteCriteria.builder() return RouteCriteria.builder()
.gemeindeSchluessel(Optional.of(GEMEINDE_SCHLUSSEL)) .gemeindeSchluessel(Optional.of(GEMEINDE_SCHLUSSEL))
.webserviceUrl(Optional.of(WEBSERVICE_URL)) .webserviceUrl(Optional.of(WEBSERVICE_URL))
.organisationseinheitenId(Optional.of(ORGANISATIONSEINHEITEN_ID)); .organisationEinheitId(Optional.of(ORGANISATION_EINHEIT_ID));
} }
public static GrpcRouteCriteria createGrpc() { public static GrpcRouteCriteria createGrpc() {
...@@ -52,6 +52,6 @@ public class RouteCriteriaTestFactory { ...@@ -52,6 +52,6 @@ public class RouteCriteriaTestFactory {
return GrpcRouteCriteria.newBuilder() return GrpcRouteCriteria.newBuilder()
.setGemeindeSchluessel(GEMEINDE_SCHLUSSEL) .setGemeindeSchluessel(GEMEINDE_SCHLUSSEL)
.setWebserviceUrl(WEBSERVICE_URL) .setWebserviceUrl(WEBSERVICE_URL)
.setOrganisationseinheitenId(ORGANISATIONSEINHEITEN_ID); .setOrganisationseinheitenId(ORGANISATION_EINHEIT_ID);
} }
} }
package de.ozgcloud.eingang.forwarder;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.Optional;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
import de.ozgcloud.eingang.router.VorgangService;
class RouteForwardingServiceTest {
@InjectMocks
private RouteForwardingService routeForwardingService;
@Mock
private VorgangService vorgangService;
@Captor
private ArgumentCaptor<FormData> formDataCaptor;
@Nested
class TestRoute {
private final FormData formData = FormDataTestFactory.create();
@Test
void shouldCallVorgangService() {
var criteria = RouteCriteriaTestFactory.create();
routeForwardingService.route(criteria, formData);
verify(vorgangService).createVorgang(formDataCaptor.capture());
assertThat(formDataCaptor.getValue()).usingRecursiveComparison().ignoringFields("zustaendigeStelles").isEqualTo(formData);
}
@Test
void shouldSetOrganisationEinheitIdInFormData() {
var criteria = RouteCriteriaTestFactory.create();
var expectedZustaendigeStelle = ZustaendigeStelle.builder()
.organisationseinheitenId(RouteCriteriaTestFactory.ORGANISATION_EINHEIT_ID)
.build();
routeForwardingService.route(criteria, formData);
verify(vorgangService).createVorgang(formDataCaptor.capture());
assertThat(formDataCaptor.getValue().getZustaendigeStelles()).usingRecursiveFieldByFieldElementComparator()
.containsExactly(expectedZustaendigeStelle);
}
@Test
void shouldThrowUnsupportedOperationException() {
var criteria = RouteCriteriaTestFactory.createBuilder().organisationEinheitId(Optional.empty()).build();
assertThrows(UnsupportedOperationException.class, () -> routeForwardingService.route(criteria, formData));
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment