diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java index 6d096f3bd1cbef4391c96ae310ec61560639175c..307eb45ba475b33920967d48eab1f8f0cdcc87c3 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java @@ -2,6 +2,8 @@ package de.ozgcloud.zufi.organisationseinheit; import java.util.List; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdRequest; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchRequest; @@ -48,4 +50,19 @@ class OrganisationsEinheitGrpcService extends OrganisationsEinheitServiceImplBas return responseBuilder.build(); } + @Override + public void getByOrganisationsEinheitId(GrpcGetByOrganisationsEinheitIdRequest request, + StreamObserver<GrpcGetByOrganisationsEinheitIdResponse> responseObserver) { + var organisationsEinheiten = searchService.getByOrganisationsEinheitId(request.getId()); + responseObserver.onNext(buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten)); + responseObserver.onCompleted(); + } + + GrpcGetByOrganisationsEinheitIdResponse buildGetByOrganisationsEinheitIdResponse(List<OrganisationsEinheit> organisationsEinheiten) { + var responseBuilder = GrpcGetByOrganisationsEinheitIdResponse.newBuilder(); + organisationsEinheiten.stream() + .map(mapper::fromOrganisationsEinheit) + .forEach(responseBuilder::addOrganisationsEinheiten);; + return responseBuilder.build(); + } } diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java index 0825f1ff8c723fcea19d6b01aa97a5975534581c..098dedd71581fd9f4adf765fdb82a94f8882d415 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java @@ -17,6 +17,10 @@ class OrganisationsEinheitSearchService { return repository.findById(id).orElseThrow(() -> new OrganisationsEinheitNotFoundException(id)); } + public List<OrganisationsEinheit> getByOrganisationsEinheitId(String id) { + return List.of(); + } + public List<OrganisationsEinheit> search(String text, String ars) { if (StringUtils.isEmpty(ars)) { return repository.findAllContaining(text); diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..84996a7d855e4ebd4ff94a755f6be88ece95d779 --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java @@ -0,0 +1,15 @@ +package de.ozgcloud.zufi.organisationseinheit; + +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdRequest; + +class GrpcGetByOrganisationsEinheitIdRequestTestFactory { + + public static GrpcGetByOrganisationsEinheitIdRequest create() { + return createBuilder().build(); + } + + public static GrpcGetByOrganisationsEinheitIdRequest.Builder createBuilder() { + return GrpcGetByOrganisationsEinheitIdRequest.newBuilder() + .setId(OrganisationsEinheitTestFactory.XZUFI_ID.getId()); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..f47342ab59431f755e574916f23755f1344710d9 --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java @@ -0,0 +1,18 @@ +package de.ozgcloud.zufi.organisationseinheit; + +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdResponse; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; + +class GrpcGetByOrganisationsEinheitIdResponseTestFactory { + + public static final GrpcOrganisationsEinheit GRPC_ORGANISATIONS_EINHEIT = GrpcOrganisationsEinheitTestFactory.create(); + + public static GrpcGetByOrganisationsEinheitIdResponse create() { + return createBuilder().build(); + } + + public static GrpcGetByOrganisationsEinheitIdResponse.Builder createBuilder() { + return GrpcGetByOrganisationsEinheitIdResponse.newBuilder() + .addOrganisationsEinheiten(GRPC_ORGANISATIONS_EINHEIT); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java index fe61176d657b985cc322e1d99082e004a5730ca5..8a5b62e561687319d9fe7cadda583ecd428aa39e 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java @@ -14,6 +14,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; @@ -26,7 +27,7 @@ class OrganisationsEinheitGrpcServiceTest { @InjectMocks private OrganisationsEinheitGrpcService service; @Mock - private OrganisationsEinheitSearchService organisationsEinheitSearchService; + private OrganisationsEinheitSearchService searchService; @Mock private GrpcOrganisationsEinheitMapper mapper; @@ -52,7 +53,7 @@ class OrganisationsEinheitGrpcServiceTest { @BeforeEach void setUpMocks() { - when(organisationsEinheitSearchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); + when(searchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); when(mapper.fromOrganisationsEinheit(organisationsEinheit2)).thenReturn(grpcOrganisationsEinheit2); } @@ -61,11 +62,11 @@ class OrganisationsEinheitGrpcServiceTest { void shouldCallService() { callService(); - verify(organisationsEinheitSearchService).search(request.getSearchBy(), request.getArs()); + verify(searchService).search(request.getSearchBy(), request.getArs()); } @Test - void shouldCreateResponse() { + void shouldBuildResponse() { callService(); verify(service).buildOrganisationsEinheitSearchResponse(organisationsEinheiten); @@ -93,7 +94,7 @@ class OrganisationsEinheitGrpcServiceTest { @BeforeEach void setUpMocks() { - when(organisationsEinheitSearchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); + when(searchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); when(mapper.fromOrganisationsEinheit(organisationsEinheit2)).thenReturn(grpcOrganisationsEinheit2); } @@ -139,7 +140,7 @@ class OrganisationsEinheitGrpcServiceTest { @BeforeEach void setUpMocks() { - when(organisationsEinheitSearchService.getById(organisationsEinheitId)).thenReturn(organisationsEinheit); + when(searchService.getById(organisationsEinheitId)).thenReturn(organisationsEinheit); when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); } @@ -147,11 +148,11 @@ class OrganisationsEinheitGrpcServiceTest { void shouldCallService() { callService(); - verify(organisationsEinheitSearchService).getById(organisationsEinheitId); + verify(searchService).getById(organisationsEinheitId); } @Test - void shouldCreateResponse() { + void shouldBuildResponse() { callService(); verify(service).buildOrganisationsEinheitGetResponse(organisationsEinheit); @@ -206,4 +207,86 @@ class OrganisationsEinheitGrpcServiceTest { } + @Nested + class TestGetByOrganisationsEinheitId { + + public static final String ORGANISATIONS_EINHEIT_ID = OrganisationsEinheitTestFactory.XZUFI_ID.getId(); + + private final List<OrganisationsEinheit> organisationsEinheiten = List.of(organisationsEinheit); + private final GrpcGetByOrganisationsEinheitIdResponse response = GrpcGetByOrganisationsEinheitIdResponseTestFactory.create(); + + @Mock + private StreamObserver<GrpcGetByOrganisationsEinheitIdResponse> responseObserver; + + @Captor + private ArgumentCaptor<GrpcGetByOrganisationsEinheitIdResponse> responseCaptor; + + @BeforeEach + void init() { + when(searchService.getByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID)).thenReturn(organisationsEinheiten); + doReturn(response).when(service).buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten); + } + + @Test + void shouldCallService() { + callService(); + + verify(searchService).getByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID); + } + + @Test + void shouldBuildResponse() { + callService(); + + verify(service).buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten); + } + + @Test + void shouldReturnResponse() { + callService(); + + verify(responseObserver).onNext(responseCaptor.capture()); + assertThat(responseCaptor.getValue()).isEqualTo(response); + } + + @Test + void shouldCompleteResponse() { + callService(); + + verify(responseObserver).onCompleted(); + } + + private void callService() { + service.getByOrganisationsEinheitId(GrpcGetByOrganisationsEinheitIdRequestTestFactory.create(), responseObserver); + } + } + + @Nested + class TestBuildGetByOrganisationsEinheitIdResponse { + + private final List<OrganisationsEinheit> organisationsEinheiten = List.of(organisationsEinheit); + + @BeforeEach + void setup() { + when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); + } + + @Test + void shouldMapOrganisationsEinheit() { + callService(); + + verify(mapper).fromOrganisationsEinheit(organisationsEinheit); + } + + @Test + void shouldReturnResponse() { + var result = callService(); + + assertThat(result.getOrganisationsEinheitenList()).containsExactly(GrpcGetByOrganisationsEinheitIdResponseTestFactory.GRPC_ORGANISATIONS_EINHEIT); + } + + private GrpcGetByOrganisationsEinheitIdResponse callService() { + return service.buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten); + } + } }