From 7db9c63f3f25c77ee15a34cec3d844a5ca94767b Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Thu, 28 Nov 2024 13:29:14 +0100
Subject: [PATCH] #4 OZG-7112 Add missing test

---
 .../osiv2/OsiPostfachRemoteServiceTest.java   | 38 ++++++++++-
 .../PostfachApiFacadeServiceTest.java         | 64 +++++++++++++++++++
 2 files changed, 100 insertions(+), 2 deletions(-)
 create mode 100644 src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java

diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
index 2d405aa..b82448d 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
@@ -1,29 +1,63 @@
 package de.ozgcloud.nachrichten.postfach.osiv2;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import java.util.stream.Stream;
 
 import org.junit.jupiter.api.DisplayName;
 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 de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
+import de.ozgcloud.nachrichten.postfach.osiv2.transfer.PostfachApiFacadeService;
+
 class OsiPostfachRemoteServiceTest {
 
 	@Spy
 	@InjectMocks
 	private OsiPostfachRemoteService osiPostfachRemoteService;
 
+	@Mock
+	private PostfachApiFacadeService postfachApiFacadeService;
+
+	private final PostfachNachricht nachricht1 = PostfachNachrichtTestFactory.createBuilder()
+			.subject("Nachricht 1")
+			.build();
+	private final PostfachNachricht nachricht2 = PostfachNachrichtTestFactory.createBuilder()
+			.subject("Nachricht 2")
+			.build();
+
 	@DisplayName("send message")
 	@Nested
 	class TestSendMessage {
-		// TODO
+
+		@DisplayName("should call send message")
+		@Test
+		void shouldCallSendMessage() {
+			postfachApiFacadeService.sendMessage(nachricht1);
+
+			verify(postfachApiFacadeService).sendMessage(nachricht1);
+		}
 	}
 
 	@DisplayName("get all messages")
 	@Nested
 	class TestGetAllMessages {
-		// TODO
+
+		@DisplayName("should return postfach messages")
+		@Test
+		void shouldReturnPostfachMessages() {
+			when(postfachApiFacadeService.receiveMessages()).thenReturn(Stream.of(nachricht1, nachricht2));
+
+			var result = osiPostfachRemoteService.getAllMessages();
+
+			assertThat(result).containsExactly(nachricht1, nachricht2);
+		}
 	}
 
 	@DisplayName("delete message")
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java
new file mode 100644
index 0000000..19e9ca3
--- /dev/null
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java
@@ -0,0 +1,64 @@
+package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
+
+import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
+import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi;
+import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeSendMessageResponse;
+import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2;
+import reactor.core.publisher.Mono;
+
+class PostfachApiFacadeServiceTest {
+
+	@InjectMocks
+	PostfachApiFacadeService postfachApiFacadeService;
+
+	@Mock
+	MessageExchangeApi messageExchangeApi;
+
+	@Mock
+	RequestMapper requestMapper;
+
+	@Mock
+	ResponseMapper responseMapper;
+
+	@DisplayName("send message")
+	@Nested
+	class TestSendMessage {
+
+		@Mock
+		OutSendMessageRequestV2 outSendMessageRequestV2;
+
+		@Mock
+		MessageExchangeSendMessageResponse messageExchangeSendMessageResponse;
+
+		private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			var responseMono = Mono.just(messageExchangeSendMessageResponse);
+			when(requestMapper.mapMailboxId(nachricht)).thenReturn(MAILBOX_ID);
+			when(requestMapper.mapOutSendMessageRequestV2(nachricht)).thenReturn(outSendMessageRequestV2);
+			when(messageExchangeApi.sendMessage(any(), any())).thenReturn(responseMono);
+		}
+
+		@DisplayName("should call sendMessage")
+		@Test
+		void shouldCallSendMessage() {
+			postfachApiFacadeService.sendMessage(nachricht);
+
+			verify(messageExchangeApi).sendMessage(MAILBOX_ID, outSendMessageRequestV2);
+
+		}
+	}
+
+}
\ No newline at end of file
-- 
GitLab