import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import reactor.core.publisher.Flux;
import java.io.IOException;
import java.nio.file.Files;
import java.time.Clock;
import java.util.List;
-import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
+import static pl.rzrz.assertj.reactor.Assertions.*;
@Slf4j
{
final static Path path = Paths.get("target","local-json-files");
- InMemoryChatHomeService service;
+ InMemoryChatHomeService chatHomeService;
StorageStrategy storageStrategy;
ChatHome chathome;
void start()
{
Clock clock = Clock.systemDefaultZone();
- service = new InMemoryChatHomeService(clock, 8);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
- storageStrategy = new LocalJsonFilesStorageStrategy(path, mapper, service);
- chathome = new ChatHome(service, storageStrategy.readChatrooms());
+ storageStrategy = new LocalJsonFilesStorageStrategy(path, clock, 8, mapper);
+ chatHomeService = new InMemoryChatHomeService(storageStrategy.readChatrooms(), clock, 8);
+ chathome = new ChatHome(chatHomeService);
}
void stop()
{
- storageStrategy.writeChatrooms(Flux.fromStream(chathome.list()));
+ storageStrategy.writeChatrooms(chathome.getChatRooms());
}
@Test
{
start();
- assertThat(chathome.list()).hasSize(0);
+ assertThat(chathome.getChatRooms().toStream()).hasSize(0);
- ChatRoom chatroom = chathome.createChatroom("FOO");
+ 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();
- assertThat(chathome.list()).containsExactlyElementsOf(List.of(chatroom));
- assertThat(chathome.getChatroom(chatroom.getId())).contains(chatroom);
- assertThat(chathome.getChatroom(chatroom.getId()).get().getMessages().toStream()).containsExactlyElementsOf(List.of(m1, m2, m3, m4));
+ assertThat(chathome.getChatRooms().toStream()).containsExactlyElementsOf(List.of(chatroom));
+ assertThat(chathome.getChatRoom(chatroom.getId())).emitsExactly(chatroom);
+ assertThat(chathome
+ .getChatRoom(chatroom.getId())
+ .flatMapMany(cr -> cr.getMessages())).emitsExactly(m1, m2, m3, m4);
stop();
start();
- assertThat(chathome.list()).containsExactlyElementsOf(List.of(chatroom));
- assertThat(chathome.getChatroom(chatroom.getId())).contains(chatroom);
- assertThat(chathome.getChatroom(chatroom.getId()).get().getMessages().toStream()).containsExactlyElementsOf(List.of(m1, m2, m3, m4));
+ assertThat(chathome.getChatRooms().toStream()).containsExactlyElementsOf(List.of(chatroom));
+ assertThat(chathome.getChatRoom(chatroom.getId())).emitsExactly(chatroom);
+ assertThat(chathome
+ .getChatRoom(chatroom.getId())
+ .flatMapMany(cr -> cr.getMessages())).emitsExactly(m1, m2, m3, m4);
}
@BeforeEach