From 8e8e19c0c5ca8a211e1a3de317db20a09aee438a Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 12 Apr 2024 14:25:24 +0200
Subject: [PATCH] OZG-5323 implement comments from code review

---
 .../attacheditem/AttachedItemMapper.java      |  2 +-
 .../bescheid/BescheidEventListenerITCase.java |  3 +
 .../attacheditem/AttachedItemServiceTest.java | 21 +++++
 .../VorgangAttachedItemRemoteServiceTest.java | 78 +++++++++++++++++++
 .../nachricht/NachrichtServiceITCase.java     |  3 +
 .../document/DocumentServiceTest.java         | 33 ++++++++
 6 files changed, 139 insertions(+), 1 deletion(-)

diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemMapper.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemMapper.java
index 219846854..c2b373a33 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemMapper.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/attacheditem/AttachedItemMapper.java
@@ -29,7 +29,7 @@ import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
 import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
 
 @Mapper(uses = { GrpcObjectMapper.class})
-public interface AttachedItemMapper {
+interface AttachedItemMapper {
 
 	AttachedItem mapFromVorgangAttachedItem(GrpcVorgangAttachedItem item);
 
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java
index 3728f3c86..33bfa8218 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java
@@ -20,6 +20,7 @@ import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandCreatedEventTestFactory;
 import de.ozgcloud.command.CommandTestFactory;
 import de.ozgcloud.common.test.ITCase;
+import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
 
 @ITCase
 class BescheidEventListenerITCase {
@@ -37,6 +38,8 @@ class BescheidEventListenerITCase {
 	private CommandMapper commandMapper;
 	@MockBean
 	private AttachedItemService attachedItemService;
+	@MockBean
+	private VorgangAttachedItemServiceBlockingStub serviceStub;
 
 	@Mock
 	private UserProfile userProfile;
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java
index 3c10b5cdb..107f4e3ca 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/AttachedItemServiceTest.java
@@ -727,4 +727,25 @@ class AttachedItemServiceTest {
 		}
 
 	}
+
+	@Nested
+	class TestGetItem {
+
+		@Test
+		void shouldCallRemoteService() {
+			service.getItem(BescheidItemTestFactory.ID);
+
+			verify(service).getItem(BescheidItemTestFactory.ID);
+		}
+
+		@Test
+		void shouldReturnValue() {
+			var expectedItem = AttachedItemTestFactory.createDocument();
+			doReturn(expectedItem).when(remoteService).getItem(any());
+
+			var result = service.getItem(BescheidItemTestFactory.ID);
+
+			assertThat(result).isEqualTo(expectedItem);
+		}
+	}
 }
\ No newline at end of file
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java
index 88259ab13..08f8be7d2 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/attacheditem/VorgangAttachedItemRemoteServiceTest.java
@@ -67,6 +67,8 @@ class VorgangAttachedItemRemoteServiceTest {
 	private ClientInterceptor bescheidCallContextInterceptor;
 	@Mock
 	private BescheidItemMapper bescheidItemMapper;
+	@Mock
+	private AttachedItemMapper attachedItemMapper;
 
 	@Nested
 	class TestFindBescheidDraft {
@@ -320,6 +322,82 @@ class VorgangAttachedItemRemoteServiceTest {
 		}
 	}
 
+	@Nested
+	class TestGetItem {
+
+		@Mock
+		private GrpcVorgangAttachedItemRequest grpcVorgangAttachedItemRequest;
+		@Mock
+		private GrpcVorgangAttachedItemResponse grpcVorgangAttachedItemResponse;
+		@Mock
+		private GrpcVorgangAttachedItem grpcVorgangAttachedItem;
+
+		@BeforeEach
+		void init() {
+			when(serviceStub.getById(any())).thenReturn(grpcVorgangAttachedItemResponse);
+			doReturn(serviceStub).when(service).getServiceStub();
+		}
+
+		@Test
+		void shouldCallGetServiceStab() {
+			when(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()).thenReturn(grpcVorgangAttachedItem);
+
+			getItem();
+
+			verify(service).getServiceStub();
+		}
+
+		@Test
+		void shouldCallBuildRequest() {
+			when(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()).thenReturn(grpcVorgangAttachedItem);
+
+			getItem();
+
+			verify(service).buildGetByIdRequest(AttachedItemTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallGetById() {
+			when(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()).thenReturn(grpcVorgangAttachedItem);
+			doReturn(grpcVorgangAttachedItemRequest).when(service).buildGetByIdRequest(any());
+
+			getItem();
+
+			verify(serviceStub).getById(grpcVorgangAttachedItemRequest);
+		}
+
+		@Test
+		void shouldCallMapper() {
+			when(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()).thenReturn(grpcVorgangAttachedItem);
+
+			getItem();
+
+			verify(attachedItemMapper).mapFromVorgangAttachedItem(grpcVorgangAttachedItem);
+		}
+
+		@Test
+		void shouldReturnFoundBescheid() {
+			var expectedItem = AttachedItemTestFactory.createDocument();
+			when(attachedItemMapper.mapFromVorgangAttachedItem(any())).thenReturn(expectedItem);
+			when(grpcVorgangAttachedItemResponse.getVorgangAttachedItem()).thenReturn(grpcVorgangAttachedItem);
+
+			var result = getItem();
+
+			assertThat(result).isEqualTo(expectedItem);
+		}
+
+		@Test
+		void shouldThrowExceptionIfNotFound() {
+			when(serviceStub.getById(any())).thenThrow(StatusRuntimeException.class);
+
+			assertThrows(StatusRuntimeException.class, this::getItem);
+		}
+
+		private AttachedItem getItem() {
+			return service.getItem(BescheidItemTestFactory.ID);
+		}
+	}
+
 	@Nested
 	class TestBuildGetByIdRequest {
 
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java
index bffdefb5e..9b3e707d5 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java
@@ -13,6 +13,7 @@ import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
 import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
 import de.ozgcloud.bescheid.BescheidTestFactory;
 import de.ozgcloud.common.test.ITCase;
+import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
 
 @ITCase
 class NachrichtServiceITCase {
@@ -23,6 +24,8 @@ class NachrichtServiceITCase {
 	private OzgCloudCommandService commandService;
 	@MockBean
 	private CommandMapper commandMapper;
+	@MockBean
+	private VorgangAttachedItemServiceBlockingStub serviceStub;
 
 	@Nested
 	class TestBuildMessage {
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java
index 9ade64173..d97c1176e 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/document/DocumentServiceTest.java
@@ -44,6 +44,7 @@ import de.ozgcloud.apilib.common.datatypes.GenericId;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.bescheid.BescheidCallContextAttachingInterceptor;
 import de.ozgcloud.bescheid.attacheditem.AttachedItemService;
+import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory;
 import de.ozgcloud.bescheid.attacheditem.BescheidItem;
 import de.ozgcloud.bescheid.attacheditem.BescheidItemTestFactory;
 import de.ozgcloud.command.Command;
@@ -65,6 +66,8 @@ class DocumentServiceTest {
 	private CommandMapper commandMapper;
 	@Mock
 	private AttachedItemService attachedItemService;
+	@Mock
+	private DocumentMapper documentMapper;
 
 	private Command command = CommandTestFactory.createBuilder()
 			.relationId(RELATION_ID)
@@ -293,4 +296,34 @@ class DocumentServiceTest {
 		}
 	}
 
+	@Nested
+	class TestGetDocument {
+
+		@Test
+		void shouldCallAttachedItemService() {
+			service.getDocument(AttachedItemTestFactory.ID);
+
+			verify(attachedItemService).getItem(AttachedItemTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallDocumentMapper() {
+			var expectedItem  = AttachedItemTestFactory.createDocument();
+			when(attachedItemService.getItem(any())).thenReturn(expectedItem);
+
+			service.getDocument(AttachedItemTestFactory.ID);
+
+			verify(documentMapper).fromAttacheItem(expectedItem);
+		}
+
+		@Test
+		void shouldReturnDocument() {
+			var expectedDocument = DocumentTestFactory.create();
+			when(documentMapper.fromAttacheItem(any())).thenReturn(expectedDocument);
+
+			Document document = service.getDocument(AttachedItemTestFactory.ID);
+
+			assertThat(document).isEqualTo(expectedDocument);
+		}
+	}
 }
\ No newline at end of file
-- 
GitLab