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

OZG-5099 dummy implementation for getBescheidDraft

parent 11a0e687
No related branches found
No related tags found
No related merge requests found
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<version>1.8.0-SNAPSHOT</version> <version>1.8.0-SNAPSHOT</version>
<properties> <properties>
<vorgang-manager.version>2.2.1</vorgang-manager.version> <vorgang-manager.version>2.4.0-SNAPSHOT</vorgang-manager.version>
<api-lib.version>0.5.0</api-lib.version> <api-lib.version>0.5.0</api-lib.version>
</properties> </properties>
...@@ -57,6 +57,10 @@ ...@@ -57,6 +57,10 @@
<groupId>net.devh</groupId> <groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId> <artifactId>grpc-client-spring-boot-starter</artifactId>
</dependency> </dependency>
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId> <artifactId>spring-boot-starter-freemarker</artifactId>
......
package de.ozgcloud.bescheid;
import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceImplBase;
import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
import net.devh.boot.grpc.server.service.GrpcService;
@GrpcService
@RequiredArgsConstructor
class BescheidGrpcService extends BescheidServiceImplBase {
private final GrpcBescheidMapper mapper;
@Override
public void getBescheidDraft(GrpcGetBescheidDraftRequest request, StreamObserver<GrpcGetBescheidDraftResponse> responseObserver) {
// dummy implementation
// TODO OZG-5099 du real implementation - load Bescheid
var bescheid = Bescheid.builder().build();
responseObserver.onNext(buildResponse(bescheid));
responseObserver.onCompleted();
}
GrpcGetBescheidDraftResponse buildResponse(Bescheid bescheid) {
return GrpcGetBescheidDraftResponse.newBuilder()
.setBescheid(mapper.fromBescheid(bescheid))
.build();
}
}
package de.ozgcloud.bescheid;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@Mapper
public interface GrpcBescheidMapper {
@Mapping(target = "mergeFrom", ignore = true)
@Mapping(target = "clearField", ignore = true)
@Mapping(target = "clearOneof", ignore = true)
@Mapping(target = "mergeUnknownFields", ignore = true)
@Mapping(target = "bescheidDocument", ignore = true)
@Mapping(target = "bescheidDocumentBytes", ignore = true)
@Mapping(target = "beschiedenAm", ignore = true)
@Mapping(target = "beschiedenAmBytes", ignore = true)
@Mapping(target = "nachrichtSubject", ignore = true)
@Mapping(target = "nachrichtSubjectBytes", ignore = true)
@Mapping(target = "nachrichtTextBytes", ignore = true)
@Mapping(target = "sendBy", ignore = true)
@Mapping(target = "sendByBytes", ignore = true)
@Mapping(target = "unknownFields", ignore = true)
@Mapping(target = "allFields", ignore = true)
@Mapping(target = "attachmentsList", ignore = true)
@Mapping(target = "nachrichtText", source = "nachrichtText")
@Mapping(target = "bewilligt", source = "genehmigt")
GrpcBescheid fromBescheid(Bescheid bescheid);
default String fromOptional(Optional<String> optionalString) {
return optionalString.orElse(StringUtils.EMPTY);
}
}
package de.ozgcloud.bescheid;
import static org.mockito.ArgumentMatchers.*;
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 io.grpc.stub.StreamObserver;
class BescheidGrpcServiceTest {
@Spy
@InjectMocks
private BescheidGrpcService service;
@Mock
private GrpcBescheidMapper mapper;
@BeforeEach
void initMapperMock() {
when(mapper.fromBescheid(any())).thenReturn(GrpcBescheidTestFactory.create());
}
@Nested
class TestGetBescheidDraft {
@Mock
private GrpcGetBescheidDraftRequest request;
@Mock
private StreamObserver<GrpcGetBescheidDraftResponse> responseObserver;
private static final GrpcGetBescheidDraftResponse response = GrpcGetBescheidDraftResponse.newBuilder().build();
@BeforeEach
void initMocks() {
when(service.buildResponse(any())).thenReturn(response);
}
@Test
void shouldBuildResponse() {
service.getBescheidDraft(request, responseObserver);
verify(service).buildResponse(any());
}
@Test
void shouldCallNext() {
service.getBescheidDraft(request, responseObserver);
verify(responseObserver).onNext(response);
}
@Test
void shouldCallCompleted() {
service.getBescheidDraft(request, responseObserver);
verify(responseObserver).onCompleted();
}
}
@Nested
class TestBuildResponse {
@Test
void shouldCallMapper() {
Bescheid bescheid = BescheidTestFactory.create();
service.buildResponse(bescheid);
verify(mapper).fromBescheid(bescheid);
}
}
}
package de.ozgcloud.bescheid;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
class GrpcBescheidMapperTest {
private GrpcBescheidMapper mapper = Mappers.getMapper(GrpcBescheidMapper.class);
@Nested
class TestFromBescheid {
@Test
void shouldMapAllFields() {
var result = mapper.fromBescheid(BescheidTestFactory.create());
assertThat(result).usingRecursiveComparison().isEqualTo(GrpcBescheidTestFactory.create());
}
}
}
package de.ozgcloud.bescheid;
class GrpcBescheidTestFactory {
public static GrpcBescheid create() {
return createBuilder().build();
}
public static GrpcBescheid.Builder createBuilder() {
return GrpcBescheid.newBuilder()
.setBewilligt(true)
.setNachrichtText(BescheidTestFactory.NACHRICHT_TEXT);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment