test: Added a test that assers disjunct chatrooms
authorKai Moritz <kai@juplo.de>
Sun, 22 Jan 2023 17:34:21 +0000 (18:34 +0100)
committerKai Moritz <kai@juplo.de>
Wed, 25 Jan 2023 21:07:17 +0000 (22:07 +0100)
src/test/java/de/juplo/kafka/chat/backend/persistence/AbstractStorageStrategyIT.java
src/test/java/de/juplo/kafka/chat/backend/persistence/InMemoryWithMongoDbStorageIT.java

index c934ff4..5d22d12 100644 (file)
@@ -63,4 +63,51 @@ public abstract class AbstractStorageStrategyIT
         .getChatRoom(chatroom.getId())
         .flatMapMany(cr -> cr.getMessages())).emitsExactly(m1, m2, m3, m4);
   }
+
+  @Test
+  protected void testStoreAndRecreateParallelChatRooms()
+  {
+    start();
+
+    assertThat(chathome.getChatRooms().toStream()).hasSize(0);
+
+    UUID chatRoomAId = UUID.fromString("5c73531c-6fc4-426c-adcb-afc5c140a0f7");
+    ChatRoom chatroomA = chatRoomFactory.createChatRoom(chatRoomAId, "FOO").block();
+    chathome.putChatRoom(chatroomA);
+    Message ma1 = chatroomA.addMessage(1l,"peter", "Hallo, ich heiße Peter!").block();
+    Message ma2 = chatroomA.addMessage(1l, "ute", "Ich bin Ute...").block();
+    Message ma3 = chatroomA.addMessage(2l, "peter", "Willst du mit mir gehen?").block();
+    Message ma4 = chatroomA.addMessage(1l, "klaus", "Ja? Nein? Vielleicht??").block();
+
+    UUID chatRoomBId = UUID.fromString("8763dfdc-4dda-4a74-bea4-4b389177abea");
+    ChatRoom chatroomB = chatRoomFactory.createChatRoom(chatRoomBId, "BAR").block();
+    chathome.putChatRoom(chatroomB);
+    Message mb1 = chatroomB.addMessage(1l,"peter", "Hallo, ich heiße Uwe!").block();
+    Message mb2 = chatroomB.addMessage(1l, "ute", "Ich bin Ute...").block();
+    Message mb3 = chatroomB.addMessage(1l, "klaus", "Willst du mit mir gehen?").block();
+    Message mb4 = chatroomB.addMessage(2l, "peter", "Hä? Was jetzt?!? Isch glohb isch höb ühn däjah vüh...").block();
+
+    assertThat(chathome.getChatRooms().toStream()).containsExactlyInAnyOrderElementsOf(List.of(chatroomA, chatroomB));
+    assertThat(chathome.getChatRoom(chatroomA.getId())).emitsExactly(chatroomA);
+    assertThat(chathome
+        .getChatRoom(chatroomA.getId())
+        .flatMapMany(cr -> cr.getMessages())).emitsExactly(ma1, ma2, ma3, ma4);
+    assertThat(chathome.getChatRoom(chatroomB.getId())).emitsExactly(chatroomB);
+    assertThat(chathome
+        .getChatRoom(chatroomB.getId())
+        .flatMapMany(cr -> cr.getMessages())).emitsExactly(mb1, mb2, mb3, mb4);
+
+    stop();
+    start();
+
+    assertThat(chathome.getChatRooms().toStream()).containsExactlyInAnyOrderElementsOf(List.of(chatroomA, chatroomB));
+    assertThat(chathome.getChatRoom(chatroomA.getId())).emitsExactly(chatroomA);
+    assertThat(chathome
+        .getChatRoom(chatroomA.getId())
+        .flatMapMany(cr -> cr.getMessages())).emitsExactly(ma1, ma2, ma3, ma4);
+    assertThat(chathome.getChatRoom(chatroomB.getId())).emitsExactly(chatroomB);
+    assertThat(chathome
+        .getChatRoom(chatroomB.getId())
+        .flatMapMany(cr -> cr.getMessages())).emitsExactly(mb1, mb2, mb3, mb4);
+  }
 }
index 9808aa3..e56aff7 100644 (file)
@@ -42,6 +42,8 @@ public class InMemoryWithMongoDbStorageIT extends AbstractStorageStrategyIT
   @Autowired
   MongoDbStorageStrategy storageStrategy;
   @Autowired
+  ChatRoomRepository repository;
+  @Autowired
   Clock clock;
 
 
@@ -116,5 +118,6 @@ public class InMemoryWithMongoDbStorageIT extends AbstractStorageStrategyIT
   {
     Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(log);
     CONTAINER.followOutput(logConsumer);
+    repository.deleteAll();
   }
 }