1 package de.juplo.kafka.wordcount.splitter;
3 import de.juplo.kafka.wordcount.counter.TestOutputWord;
4 import de.juplo.kafka.wordcount.recorder.TestInputRecording;
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 Stream<KeyValue<String, TestInputRecording>> getInputMessages()
24 return Stream.of(INPUT_MESSAGES);
27 private static final KeyValue<String, TestInputRecording>[] INPUT_MESSAGES = new KeyValue[]
31 TestInputRecording.of(PETER, "Hallo Welt!")),
34 TestInputRecording.of(KLAUS, "Müsch gäb's auch!")),
37 TestInputRecording.of(PETER, "Boäh, echt! ß mal nä Nümmäh!")),
40 static void assertExpectedMessages(MultiValueMap<String, TestOutputWord> receivedMessages)
42 await("Received expected messages")
43 .atMost(Duration.ofSeconds(5))
44 .untilAsserted(() -> expectedMessages().forEach((user, word) ->
45 assertThat(receivedMessages.get(user)).containsExactlyElementsOf(word)));
48 private static final KeyValue<String, TestOutputWord>[] EXPECTED_MESSAGES = new KeyValue[]
52 TestOutputWord.of("peter", "Hallo")),
55 TestOutputWord.of("peter", "Welt")),
58 TestOutputWord.of("klaus", "Müsch")),
61 TestOutputWord.of("klaus", "gäb")),
64 TestOutputWord.of("klaus", "s")),
67 TestOutputWord.of("klaus", "auch")),
70 TestOutputWord.of("peter", "Boäh")),
73 TestOutputWord.of("peter", "echt")),
76 TestOutputWord.of("peter", "ß")),
79 TestOutputWord.of("peter", "mal")),
82 TestOutputWord.of("peter", "nä")),
85 TestOutputWord.of("peter", "Nümmäh")),
88 static MultiValueMap<String, TestOutputWord> expectedMessages()
90 MultiValueMap<String, TestOutputWord> expectedMessages = new LinkedMultiValueMap<>();
92 .of(EXPECTED_MESSAGES)
93 .forEach(keyValue -> expectedMessages.add(keyValue.key, keyValue.value));
94 return expectedMessages;