1 package de.juplo.kafka.chat.backend.persistence;
3 import de.juplo.kafka.chat.backend.domain.ChatHome;
4 import de.juplo.kafka.chat.backend.domain.ChatHomeService;
5 import de.juplo.kafka.chat.backend.domain.ChatRoom;
6 import de.juplo.kafka.chat.backend.domain.Message;
7 import lombok.extern.slf4j.Slf4j;
8 import org.junit.jupiter.api.Test;
10 import java.util.List;
11 import java.util.function.Supplier;
13 import static pl.rzrz.assertj.reactor.Assertions.*;
17 public abstract class AbstractStorageStrategyIT
19 protected ChatHome chathome;
22 protected abstract StorageStrategy getStorageStrategy();
23 protected abstract Supplier<ChatHomeService> chatHomeServiceSupplier();
25 protected void start()
27 chathome = new ChatHome(chatHomeServiceSupplier().get());
32 getStorageStrategy().write(chathome.getChatRooms());
36 protected void testStoreAndRecreate()
40 assertThat(chathome.getChatRooms().toStream()).hasSize(0);
42 ChatRoom chatroom = chathome.createChatroom("FOO").block();
43 Message m1 = chatroom.addMessage(1l,"Peter", "Hallo, ich heiße Peter!").block();
44 Message m2 = chatroom.addMessage(1l, "Ute", "Ich bin Ute...").block();
45 Message m3 = chatroom.addMessage(2l, "Peter", "Willst du mit mir gehen?").block();
46 Message m4 = chatroom.addMessage(1l, "Klaus", "Ja? Nein? Vielleicht??").block();
48 assertThat(chathome.getChatRooms().toStream()).containsExactlyElementsOf(List.of(chatroom));
49 assertThat(chathome.getChatRoom(chatroom.getId())).emitsExactly(chatroom);
51 .getChatRoom(chatroom.getId())
52 .flatMapMany(cr -> cr.getMessages())).emitsExactly(m1, m2, m3, m4);
57 assertThat(chathome.getChatRooms().toStream()).containsExactlyElementsOf(List.of(chatroom));
58 assertThat(chathome.getChatRoom(chatroom.getId())).emitsExactly(chatroom);
60 .getChatRoom(chatroom.getId())
61 .flatMapMany(cr -> cr.getMessages())).emitsExactly(m1, m2, m3, m4);