From 0668b9eca8033603c0ac5ce417d02db3726c8d1c Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 14 Oct 2024 10:56:00 +0200 Subject: [PATCH] OZG-6867 OZG-6900 Implement getByOrganisationsEinheitId in GrpcService --- .../OrganisationsEinheitGrpcService.java | 17 ++++ .../OrganisationsEinheitSearchService.java | 4 + ...anisationsEinheitIdRequestTestFactory.java | 15 +++ ...nisationsEinheitIdResponseTestFactory.java | 18 ++++ .../OrganisationsEinheitGrpcServiceTest.java | 99 +++++++++++++++++-- 5 files changed, 145 insertions(+), 8 deletions(-) create mode 100644 zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java create mode 100644 zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java 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 6d096f3b..307eb45b 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 0825f1ff..098dedd7 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 00000000..84996a7d --- /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 00000000..f47342ab --- /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 fe61176d..8a5b62e5 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); + } + } } -- GitLab