refactor: Moved exceptions into package `exceptions` - Aligned Code
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / domain / ChatHomeWithShardsTest.java
1 package de.juplo.kafka.chat.backend.domain;
2
3 import de.juplo.kafka.chat.backend.domain.exceptions.LoadInProgressException;
4 import de.juplo.kafka.chat.backend.domain.exceptions.ShardNotOwnedException;
5 import org.junit.jupiter.api.DisplayName;
6 import org.junit.jupiter.api.Test;
7 import reactor.core.publisher.Mono;
8 import reactor.util.retry.Retry;
9
10 import java.time.Duration;
11 import java.util.UUID;
12
13 import static pl.rzrz.assertj.reactor.Assertions.assertThat;
14
15
16 public abstract class ChatHomeWithShardsTest extends ChatHomeTest
17 {
18   public static final int NUM_SHARDS = 10;
19   public static final int OWNED_SHARD = 2;
20   public static final int NOT_OWNED_SHARD = 0;
21
22
23   @Test
24   @DisplayName("Assert ShardNotOwnedException is thrown, if the shard for the chatroom is not owned")
25   void testGetChatroomForNotOwnedShard()
26   {
27     // Given
28     UUID chatRoomId = UUID.fromString("4e7246a6-29ae-43ea-b56f-669c3481ac19");
29
30     // When
31     Mono<ChatRoomData> mono = Mono
32         .defer(() -> chatHome.getChatRoomData(chatRoomId))
33         .log("testGetChatroomForNotOwnedShard")
34         .retryWhen(Retry
35             .backoff(5, Duration.ofSeconds(1))
36             .filter(throwable -> throwable instanceof LoadInProgressException));
37
38     // Then
39     assertThat(mono).sendsError(e ->
40     {
41       assertThat(e).isInstanceOf(ShardNotOwnedException.class);
42       ShardNotOwnedException shardNotOwnedException = (ShardNotOwnedException) e;
43       assertThat(shardNotOwnedException.getShard()).isEqualTo(NOT_OWNED_SHARD);
44     });
45   }
46 }