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 2d405aa817da68f32eced56d2cb6cc5e2331daf6..b82448d57e272a516b01b91b313873e6c224988d 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 0000000000000000000000000000000000000000..19e9ca36386476880d6d25d956840b7263da3e88 --- /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