diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java index 5f9cfc050e48a12217c6c2bb51f754378a8350b6..372a0f5f197e2ddbc922d881c345f19b0d3e073a 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java @@ -7,7 +7,9 @@ import org.springframework.stereotype.Service; import de.ozgcloud.alfa.common.GrpcUtil; import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub; +import de.ozgcloud.bescheid.GrpcBescheid; import de.ozgcloud.bescheid.GrpcGetBescheidDraftRequest; +import de.ozgcloud.bescheid.GrpcGetBescheidDraftResponse; import net.devh.boot.grpc.client.inject.GrpcClient; @Service @@ -21,7 +23,7 @@ class BescheidRemoteService { public Optional<Bescheid> getBescheidDraft(String vorgangId) { var request = buildGetBescheidDraftRequest(vorgangId); var response = bescheidServiceStub.getBescheidDraft(request); - return Optional.ofNullable(bescheidMapper.fromGrpc(response.getBescheid(), vorgangId)); + return getBescheidFromResponse(response).map(bescheid -> bescheidMapper.fromGrpc(bescheid, vorgangId)); } GrpcGetBescheidDraftRequest buildGetBescheidDraftRequest(String vorgangId) { @@ -30,4 +32,8 @@ class BescheidRemoteService { .build(); } + Optional<GrpcBescheid> getBescheidFromResponse(GrpcGetBescheidDraftResponse response) { + return response.hasBescheid() ? Optional.of(response.getBescheid()) : Optional.empty(); + } + } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java index 94abc152a865c1d00144f7754bb0f9b7ded077eb..2671618ca8384dc7119815e353aa77ea092da361 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java @@ -3,6 +3,8 @@ package de.ozgcloud.alfa.bescheid; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.Optional; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -36,8 +38,6 @@ class BescheidRemoteServiceTest { void setUp() { doReturn(request).when(service).buildGetBescheidDraftRequest(VorgangHeaderTestFactory.ID); when(bescheidServiceStub.getBescheidDraft(request)).thenReturn(response); - when(bescheidMapper.fromGrpc(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID)).thenReturn( - bescheidDraft); } @Test @@ -56,6 +56,8 @@ class BescheidRemoteServiceTest { @Test void shouldCallMapper() { + doReturn(Optional.of(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID)).when(service).getBescheidFromResponse(response); + service.getBescheidDraft(VorgangHeaderTestFactory.ID); verify(bescheidMapper).fromGrpc(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID); @@ -63,6 +65,9 @@ class BescheidRemoteServiceTest { @Test void shouldReturnBescheid() { + when(bescheidMapper.fromGrpc(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID)).thenReturn( + bescheidDraft); + var bescheidDraft = service.getBescheidDraft(VorgangHeaderTestFactory.ID); assertThat(bescheidDraft).hasValue(this.bescheidDraft); @@ -70,12 +75,19 @@ class BescheidRemoteServiceTest { @Test void shouldReturnEmpty() { - when(bescheidMapper.fromGrpc(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID)).thenReturn(null); + doReturn(Optional.empty()).when(service).getBescheidFromResponse(response); var bescheidDraft = service.getBescheidDraft(VorgangHeaderTestFactory.ID); assertThat(bescheidDraft).isEmpty(); } + + @Test + void shouldGetBescheidFromResponse() { + service.getBescheidDraft(VorgangHeaderTestFactory.ID); + + verify(service).getBescheidFromResponse(response); + } } @Nested @@ -89,4 +101,22 @@ class BescheidRemoteServiceTest { } } + @Nested + class GetBescheidFromResponseTest { + + @Test + void shouldReturnEmpty() { + var bescheid = service.getBescheidFromResponse(GrpcGetBescheidDraftResponse.getDefaultInstance()); + + assertThat(bescheid).isEmpty(); + } + + @Test + void shouldReturnBescheid() { + var bescheid = service.getBescheidFromResponse(GrpcGetBescheidDraftResponseTestFactory.create()); + + assertThat(bescheid).hasValue(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID); + } + } + } \ No newline at end of file