package de.juplo.kafka.chat.backend.persistence;
-import de.juplo.kafka.chat.backend.domain.ChatHome;
-import de.juplo.kafka.chat.backend.domain.ChatHomeService;
-import de.juplo.kafka.chat.backend.domain.ChatRoom;
-import de.juplo.kafka.chat.backend.domain.Message;
+import de.juplo.kafka.chat.backend.domain.*;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import java.util.List;
+import java.util.UUID;
import java.util.function.Supplier;
import static pl.rzrz.assertj.reactor.Assertions.*;
@Slf4j
public abstract class AbstractStorageStrategyIT
{
- ChatHome chathome;
+ protected ChatHome chathome;
+ protected ChatRoomFactory chatRoomFactory;
- abstract StorageStrategy getStorageStrategy();
- abstract Supplier<ChatHomeService> chatHomeServiceSupplier();
+ protected abstract StorageStrategy getStorageStrategy();
+ protected abstract Supplier<ChatHomeService> getChatHomeServiceSupplier();
+ protected abstract ChatRoomFactory getChatRoomFactory();
- void start()
+ protected void start()
{
- chathome = new ChatHome(chatHomeServiceSupplier().get());
+ chathome = new ChatHome(getChatHomeServiceSupplier().get(), 0);
+ chatRoomFactory = getChatRoomFactory();
}
- void stop()
+ protected void stop()
{
- getStorageStrategy().writeChatrooms(chathome.getChatRooms());
+ getStorageStrategy().write(chathome.getChatRooms());
}
@Test
- void testStoreAndRecreate()
+ protected void testStoreAndRecreate()
{
start();
assertThat(chathome.getChatRooms().toStream()).hasSize(0);
- ChatRoom chatroom = chathome.createChatroom("FOO").block();
- Message m1 = chatroom.addMessage(1l,"Peter", "Hallo, ich heiße Peter!").block();
- Message m2 = chatroom.addMessage(1l, "Ute", "Ich bin Ute...").block();
- Message m3 = chatroom.addMessage(2l, "Peter", "Willst du mit mir gehen?").block();
- Message m4 = chatroom.addMessage(1l, "Klaus", "Ja? Nein? Vielleicht??").block();
+ UUID chatRoomId = UUID.randomUUID();
+ ChatRoom chatroom = chatRoomFactory.createChatRoom(chatRoomId, "FOO").block();
+ chathome.putChatRoom(chatroom);
+ Message m1 = chatroom.addMessage(1l,"peter", "Hallo, ich heiße Peter!").block();
+ Message m2 = chatroom.addMessage(1l, "ute", "Ich bin Ute...").block();
+ Message m3 = chatroom.addMessage(2l, "peter", "Willst du mit mir gehen?").block();
+ Message m4 = chatroom.addMessage(1l, "klaus", "Ja? Nein? Vielleicht??").block();
assertThat(chathome.getChatRooms().toStream()).containsExactlyElementsOf(List.of(chatroom));
assertThat(chathome.getChatRoom(chatroom.getId())).emitsExactly(chatroom);