From bcaf68c93d2310e8f9ef79f6fbcac9fdc6cde722 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sun, 5 May 2024 14:25:49 +0200 Subject: [PATCH] WIP --- pom.xml | 5 ++++ .../wordcount/recorder/ApplicationTests.java | 29 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 126ed07..b0e943a 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,11 @@ spring-kafka-test test + + org.awaitility + awaitility + test + diff --git a/src/test/java/de/juplo/kafka/wordcount/recorder/ApplicationTests.java b/src/test/java/de/juplo/kafka/wordcount/recorder/ApplicationTests.java index 19bb8f5..e866504 100644 --- a/src/test/java/de/juplo/kafka/wordcount/recorder/ApplicationTests.java +++ b/src/test/java/de/juplo/kafka/wordcount/recorder/ApplicationTests.java @@ -1,5 +1,6 @@ package de.juplo.kafka.wordcount.recorder; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.junit.jupiter.api.DisplayName; @@ -17,8 +18,12 @@ import org.springframework.test.web.servlet.MvcResult; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import java.time.Duration; + import static de.juplo.kafka.wordcount.recorder.ApplicationTests.PARTITIONS; import static de.juplo.kafka.wordcount.recorder.ApplicationTests.TOPIC_OUT; +import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; @@ -43,7 +48,12 @@ class ApplicationTests @Autowired - private MockMvc mockMvc; + MockMvc mockMvc; + @Autowired + Consumer consumer; + @Autowired + ObjectMapper objectMapper; + @Test @DisplayName("The application context loads") @@ -52,6 +62,7 @@ class ApplicationTests } @Test + @DisplayName("Posted messages are excepted and sent to Kafka") void userMessagesAreExceptedAndSentToKafka() throws Exception { MvcResult result = mockMvc @@ -65,6 +76,22 @@ class ApplicationTests .andExpect(status().isOk()) .andExpect(jsonPath("$.username").value(USER)) .andExpect(jsonPath("$.sentence").value(SENTENCE)); + + await("Expexted converted data") + .atMost(Duration.ofSeconds(10)) + .untilAsserted(() -> + { + assertThat(consumer.received.get(USER)).hasSize(1); + RecordingResult recordingResult = objectMapper.readValue( + consumer.received.get(USER).get(0), + RecordingResult.class); + assertThat(recordingResult.getUsername()).isEqualTo(USER); + assertThat(recordingResult.getSentence()).isEqualTo(SENTENCE); + assertThat(recordingResult.getTopic()).isEqualTo(TOPIC_OUT); + assertThat(recordingResult.getPartition()).isBetween(0, PARTITIONS - 1); + assertThat(recordingResult.getStatus()).isNull(); + assertThat(recordingResult.getError()).isNull(); + }); } static class Consumer -- 2.20.1