X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fdomain%2FChatHomeTest.java;h=6282643265a2c0a7c4ac256dc08db51ea4bbc012;hb=df207aa9a8cd349fd43785270d250a7f55593801;hp=aba4d4a83df707aff836798d831bc0f7c1227ffe;hpb=212c5eb7912fd15768ddab961d104b27acc620a0;p=demos%2Fkafka%2Fchat diff --git a/src/test/java/de/juplo/kafka/chat/backend/domain/ChatHomeTest.java b/src/test/java/de/juplo/kafka/chat/backend/domain/ChatHomeTest.java index aba4d4a8..62826432 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/domain/ChatHomeTest.java +++ b/src/test/java/de/juplo/kafka/chat/backend/domain/ChatHomeTest.java @@ -1,40 +1,45 @@ package de.juplo.kafka.chat.backend.domain; +import de.juplo.kafka.chat.backend.domain.exceptions.LoadInProgressException; +import de.juplo.kafka.chat.backend.domain.exceptions.UnknownChatroomException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.junit.jupiter.SpringExtension; import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; -import java.time.Clock; +import java.time.Duration; import java.util.UUID; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import static pl.rzrz.assertj.reactor.Assertions.assertThat; -public class ChatHomeTest +@ExtendWith(SpringExtension.class) +public abstract class ChatHomeTest { + @Autowired + ChatHome chatHome; + + @Test @DisplayName("Assert chatroom is delivered, if it exists") void testGetExistingChatroom() { // Given - ChatHomeService chatHomeService = mock(ChatHomeService.class); - ChatRoom chatRoom = new ChatRoom( - UUID.randomUUID(), - "Foo", - Clock.systemDefaultZone(), - mock(ChatRoomService.class), - 8); - when(chatHomeService.getChatRoom(any(UUID.class))).thenReturn(Mono.just(chatRoom)); - ChatHome chatHome = new ChatHome(chatHomeService); + UUID chatRoomId = UUID.fromString("5c73531c-6fc4-426c-adcb-afc5c140a0f7"); // When - Mono mono = chatHome.getChatRoom(chatRoom.getId()); + Mono mono = Mono + .defer(() -> chatHome.getChatRoomData(chatRoomId)) + .log("testGetExistingChatroom") + .retryWhen(Retry + .backoff(5, Duration.ofSeconds(1)) + .filter(throwable -> throwable instanceof LoadInProgressException)); // Then - assertThat(mono).emitsExactly(chatRoom); + assertThat(mono).emitsCount(1); } @Test @@ -42,14 +47,22 @@ public class ChatHomeTest void testGetNonExistentChatroom() { // Given - ChatHomeService chatHomeService = mock(ChatHomeService.class); - when(chatHomeService.getChatRoom(any(UUID.class))).thenReturn(Mono.empty()); - ChatHome chatHome = new ChatHome(chatHomeService); + UUID chatRoomId = UUID.fromString("7f59ec77-832e-4a17-8d22-55ef46242c17"); // When - Mono mono = chatHome.getChatRoom(UUID.randomUUID()); + Mono mono = Mono + .defer(() -> chatHome.getChatRoomData(chatRoomId)) + .log("testGetNonExistentChatroom") + .retryWhen(Retry + .backoff(5, Duration.ofSeconds(1)) + .filter(throwable -> throwable instanceof LoadInProgressException)); // Then - assertThat(mono).sendsError(); + assertThat(mono).sendsError(e -> + { + assertThat(e).isInstanceOf(UnknownChatroomException.class); + UnknownChatroomException unknownChatroomException = (UnknownChatroomException) e; + assertThat(unknownChatroomException.getChatroomId()).isEqualTo(chatRoomId); + }); } }