1 package de.juplo.kafka.wordcount.splitter;
3 import de.juplo.kafka.wordcount.counter.TestWord;
4 import de.juplo.kafka.wordcount.recorder.TestRecording;
5 import org.apache.kafka.streams.KeyValue;
6 import org.springframework.util.LinkedMultiValueMap;
7 import org.springframework.util.MultiValueMap;
9 import java.time.Duration;
10 import java.util.stream.Stream;
12 import static org.assertj.core.api.Assertions.assertThat;
13 import static org.awaitility.Awaitility.await;
18 static final String PETER = "peter";
19 static final String KLAUS = "klaus";
22 static final KeyValue<String, TestRecording>[] INPUT_MESSAGES = new KeyValue[]
26 TestRecording.of(PETER, "Hallo Welt!")),
29 TestRecording.of(KLAUS, "Müsch gäb's auch!")),
32 TestRecording.of(PETER, "Boäh, echt! ß mal nä Nümmäh!")),
35 static void assertExpectedMessages(MultiValueMap<String, TestWord> receivedMessages)
37 await("Received expected messages")
38 .atMost(Duration.ofSeconds(5))
39 .untilAsserted(() -> expectedMessages().forEach((user, word) ->
40 assertThat(receivedMessages.get(user)).containsExactlyElementsOf(word)));
43 static final KeyValue<String, TestWord>[] EXPECTED_MESSAGES = new KeyValue[]
47 TestWord.of("peter", "Hallo")),
50 TestWord.of("peter", "Welt")),
53 TestWord.of("klaus", "Müsch")),
56 TestWord.of("klaus", "gäb")),
59 TestWord.of("klaus", "s")),
62 TestWord.of("klaus", "auch")),
65 TestWord.of("peter", "Boäh")),
68 TestWord.of("peter", "echt")),
71 TestWord.of("peter", "ß")),
74 TestWord.of("peter", "mal")),
77 TestWord.of("peter", "nä")),
80 TestWord.of("peter", "Nümmäh")),
83 static MultiValueMap<String, TestWord> expectedMessages()
85 MultiValueMap<String, TestWord> expectedMessages = new LinkedMultiValueMap<>();
87 .of(EXPECTED_MESSAGES)
88 .forEach(keyValue -> expectedMessages.add(keyValue.key, keyValue.value));
89 return expectedMessages;