Skip to content
Snippets Groups Projects
Commit cff7c9c7 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6477 OZG-6439 Find collaborations using remote service

parent 139c2abc
No related branches found
No related tags found
No related merge requests found
Showing with 217 additions and 3 deletions
......@@ -24,7 +24,8 @@
unter der Lizenz sind dem Lizenztext zu entnehmen.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
......@@ -135,6 +136,10 @@
<groupId>de.ozgcloud.zufi</groupId>
<artifactId>zufi-manager-interface</artifactId>
</dependency>
<dependency>
<groupId>de.ozgcloud.collaboration</groupId>
<artifactId>collaboration-manager-interface</artifactId>
</dependency>
<!-- tools -->
<dependency>
......
package de.ozgcloud.alfa.collaboration;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.ReportingPolicy;
import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
interface CollaborationMapper {
Collaboration fromGrpc(GrpcCollaborationRequest request, String vorgangId);
}
package de.ozgcloud.alfa.collaboration;
import java.util.function.Function;
import java.util.stream.Stream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.ozgcloud.alfa.common.GrpcUtil;
import de.ozgcloud.collaboration.request.CollaborationRequestServiceGrpc.CollaborationRequestServiceBlockingStub;
import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest;
import net.devh.boot.grpc.client.inject.GrpcClient;
@Service
public class CollaborationRemoteService {
@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT) // TODO: eigener Client für collaboration manager?
private CollaborationRequestServiceBlockingStub serviceStub;
@Autowired
private CollaborationMapper collaborationMapper;
public Stream<Collaboration> getCollaborations(String vorgangId) {
// TODO: Replace Dummy Data with real grpc call
return Stream.empty();
var toCollaboration = getCollaborationMapperForVorgang(vorgangId);
return serviceStub.findRequests(buildSearchRequest(vorgangId))
.getRequestsList().stream().map(toCollaboration);
}
GrpcFindRequestsRequest buildSearchRequest(String vorgangId) {
return GrpcFindRequestsRequest.newBuilder().setVorgangId(vorgangId).build();
}
private Function<GrpcCollaborationRequest, Collaboration> getCollaborationMapperForVorgang(String vorgangId) {
return request -> collaborationMapper.fromGrpc(request, vorgangId);
}
}
package de.ozgcloud.alfa.collaboration;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import org.mockito.Spy;
class CollaborationMapperTest {
@Spy
private CollaborationMapper mapper = Mappers.getMapper(CollaborationMapper.class);
@Nested
class TestFromRequest {
@Test
void shouldMap() {
var collaboration = mapper.fromGrpc(GrpcCollaborationRequestTestFactory.create(), CollaborationTestFactory.VORGANG_ID);
assertThat(collaboration).usingRecursiveComparison().isEqualTo(CollaborationTestFactory.create());
}
}
}
package de.ozgcloud.alfa.collaboration;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
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.collaboration.request.CollaborationRequestServiceGrpc.CollaborationRequestServiceBlockingStub;
import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest;
class CollaborationRemoteServiceTest {
@Spy
@InjectMocks
private CollaborationRemoteService service;
@Mock
private CollaborationRequestServiceBlockingStub stub;
@Mock
private CollaborationMapper mapper;
@Nested
class TestGetCollaborations {
public static final String VORGANG_ID = CollaborationTestFactory.VORGANG_ID;
private final GrpcFindRequestsRequest searchRequest = GrpcFindRequestsRequestTestFactory.create();
private final Collaboration collaboration = CollaborationTestFactory.create();
@BeforeEach
void init() {
doReturn(searchRequest).when(service).buildSearchRequest(VORGANG_ID);
when(stub.findRequests(searchRequest)).thenReturn(GrpcFindRequestsResponseTestFactory.create());
when(mapper.fromGrpc(GrpcFindRequestsResponseTestFactory.REQUEST, VORGANG_ID)).thenReturn(collaboration);
}
@Test
void shouldBuildSearchRequest() {
service.getCollaborations(VORGANG_ID).toList();
verify(service).buildSearchRequest(VORGANG_ID);
}
@Test
void shouldFindRequests() {
service.getCollaborations(VORGANG_ID).toList();
verify(stub).findRequests(searchRequest);
}
@Test
void shouldMapToCollaboration() {
service.getCollaborations(VORGANG_ID).toList();
verify(mapper).fromGrpc(GrpcFindRequestsResponseTestFactory.REQUEST, VORGANG_ID);
}
@Test
void shouldReturnCollaborations() {
var collaborations = service.getCollaborations(VORGANG_ID).toList();
assertThat(collaborations).containsExactly(collaboration);
}
}
@Nested
class TestBuildSearchRequest {
@Test
void shouldSetVorgangId() {
var request = service.buildSearchRequest(GrpcFindRequestsRequestTestFactory.VORGANG_ID);
assertThat(request).usingRecursiveComparison().isEqualTo(GrpcFindRequestsRequestTestFactory.create());
}
}
}
package de.ozgcloud.alfa.collaboration;
import java.util.UUID;
import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
class GrpcCollaborationRequestTestFactory {
public static final String ID = UUID.randomUUID().toString();
public static final String COLLABORATION_VORGANG_ID = CollaborationTestFactory.COLLABORATION_VORGANG_ID;
public static final String TITEL = CollaborationTestFactory.TITEL;
public static final String BESCHREIBUNG = CollaborationTestFactory.BESCHREIBUNG;
public static final String ZUSTAENDIGE_STELLE = CollaborationTestFactory.ZUSTAENDIGE_STELLE;
public static GrpcCollaborationRequest create() {
return createBuilder()
.build();
}
private static GrpcCollaborationRequest.Builder createBuilder() {
return GrpcCollaborationRequest.newBuilder()
.setId(ID)
.setCollaborationVorgangId(COLLABORATION_VORGANG_ID)
.setTitel(TITEL)
.setBeschreibung(BESCHREIBUNG)
.setZustaendigeStelle(ZUSTAENDIGE_STELLE);
}
}
package de.ozgcloud.alfa.collaboration;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest;
class GrpcFindRequestsRequestTestFactory {
public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
public static GrpcFindRequestsRequest create() {
return createBuilder().build();
}
public static GrpcFindRequestsRequest.Builder createBuilder() {
return GrpcFindRequestsRequest.newBuilder().setVorgangId(VORGANG_ID);
}
}
package de.ozgcloud.alfa.collaboration;
import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
import de.ozgcloud.collaboration.request.GrpcFindRequestsResponse;
class GrpcFindRequestsResponseTestFactory {
public static final GrpcCollaborationRequest REQUEST = GrpcCollaborationRequestTestFactory.create();
public static GrpcFindRequestsResponse create() {
return createBuilder().build();
}
public static GrpcFindRequestsResponse.Builder createBuilder() {
return GrpcFindRequestsResponse.newBuilder().addRequests(REQUEST);
}
}
......@@ -55,6 +55,7 @@
<ozgcloud-common-pdf.version>3.0.1</ozgcloud-common-pdf.version>
<user-manager.version>2.8.0</user-manager.version>
<zufi-manager.version>1.5.0</zufi-manager.version>
<collaboration-manager.version>0.5.0</collaboration-manager.version>
<spring-cloud-config-client.version>4.1.3</spring-cloud-config-client.version>
<!-- TODO: die Version über ozgcloud-common ziehen -->
......@@ -140,6 +141,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>de.ozgcloud.collaboration</groupId>
<artifactId>collaboration-manager-interface</artifactId>
<version>${collaboration-manager.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment