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 @@
<artifactId>lombok</artifactId>
</dependency>
<!-- Test -->
<dependency>
<groupId>de.ozgcloud.eingang</groupId>
<artifactId>common</artifactId>
<type>test-jar</type>
</dependency>
</dependencies>
<build>
......
......@@ -34,5 +34,5 @@ public class RouteCriteria {
private Optional<String> gemeindeSchluessel;
private Optional<String> webserviceUrl;
private Optional<String> organisationseinheitenId;
private Optional<String> organisationEinheitId;
}
......@@ -27,12 +27,14 @@ import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
@Mapper
interface RouteCriteriaMapper {
@Mapping(target = "organisationEinheitId", source = "organisationseinheitenId")
RouteCriteria fromGrpc(GrpcRouteCriteria grpcRouteCriteria);
default Optional<String> wrapWithOptional(String val) {
......
......@@ -23,24 +23,21 @@
*/
package de.ozgcloud.eingang.forwarder;
import org.springframework.beans.factory.annotation.Autowired;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse;
import de.ozgcloud.eingang.router.GrpcEingangMapper;
import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
import net.devh.boot.grpc.server.service.GrpcService;
@GrpcService
@RequiredArgsConstructor
public class RouteForwardingGrpcService extends RouteForwardingServiceGrpc.RouteForwardingServiceImplBase {
@Autowired
private RouteForwardingService service;
@Autowired
private RouteCriteriaMapper criteriaMapper;
private final RouteForwardingService service;
private final RouteCriteriaMapper criteriaMapper;
@Autowired
private GrpcEingangMapper eingangMapper;
private final GrpcEingangMapper eingangMapper;
@Override
public void routeForwarding(GrpcRouteForwardingRequest request, StreamObserver<GrpcRouteForwardingResponse> responseObserver) {
......
......@@ -26,11 +26,23 @@ package de.ozgcloud.eingang.forwarder;
import org.springframework.stereotype.Service;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
import de.ozgcloud.eingang.router.VorgangService;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
class RouteForwardingService {
private final VorgangService vorgangService;
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 {
public static final String GEMEINDE_SCHLUSSEL = "0815";
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() {
return createBuilder().build();
......@@ -41,7 +41,7 @@ public class RouteCriteriaTestFactory {
return RouteCriteria.builder()
.gemeindeSchluessel(Optional.of(GEMEINDE_SCHLUSSEL))
.webserviceUrl(Optional.of(WEBSERVICE_URL))
.organisationseinheitenId(Optional.of(ORGANISATIONSEINHEITEN_ID));
.organisationEinheitId(Optional.of(ORGANISATION_EINHEIT_ID));
}
public static GrpcRouteCriteria createGrpc() {
......@@ -52,6 +52,6 @@ public class RouteCriteriaTestFactory {
return GrpcRouteCriteria.newBuilder()
.setGemeindeSchluessel(GEMEINDE_SCHLUSSEL)
.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