+
+ @Test
+ @DisplayName("Restored messages can be seen, when listening to restored chat-room")
+ void testListenToRestoredChatRoomYieldsRestoredMessages()
+ {
+ Awaitility
+ .await()
+ .atMost(Duration.ofSeconds(15))
+ .untilAsserted(() ->
+ {
+ Flux<MessageTo> result = webTestClient
+ .get()
+ .uri(
+ "http://localhost:{port}/{chatRoomId}/listen",
+ port,
+ EXISTING_CHATROOM)
+ .accept(MediaType.TEXT_EVENT_STREAM)
+ .exchange()
+ .expectStatus().isOk()
+ .returnResult(MessageTo.class)
+ .getResponseBody();
+
+ List<MessageTo> messages = result
+ .take(expectedExistingMessages.length)
+ .collectList()
+ .block();
+ assertThat(messages).containsExactly(expectedExistingMessages);
+ });
+ }
+
+ @Test
+ @DisplayName("Newly send messages can be seen, when listening to restored chat-room")
+ void testListenToRestoredChatRoomYieldsAddedMessages()
+ {
+ MessageTo sentMessage = webTestClient
+ .put()
+ .uri(
+ "http://localhost:{port}/{chatRoomId}/nerd/7",
+ port,
+ EXISTING_CHATROOM)
+ .contentType(MediaType.TEXT_PLAIN)
+ .accept(MediaType.APPLICATION_JSON)
+ .bodyValue("Hello world!")
+ .exchange()
+ .expectStatus()
+ .isOk()
+ .returnResult(MessageTo.class)
+ .getResponseBody()
+ .next()
+ .block();
+
+ Flux<MessageTo> result = webTestClient
+ .get()
+ .uri(
+ "http://localhost:{port}/{chatRoomId}/listen",
+ port,
+ EXISTING_CHATROOM)
+ .accept(MediaType.TEXT_EVENT_STREAM)
+ .exchange()
+ .expectStatus().isOk()
+ .returnResult(MessageTo.class)
+ .getResponseBody();
+
+ assertThat(result.next().block()).isEqualTo(sentMessage);
+ }