splitter: 1.2.0 - Introduced `TestWord.of(..)`
[demos/kafka/wordcount] / src / test / java / de / juplo / kafka / wordcount / splitter / TestData.java
1 package de.juplo.kafka.wordcount.splitter;
2
3 import de.juplo.kafka.wordcount.counter.TestWord;
4 import org.apache.kafka.streams.KeyValue;
5 import org.springframework.util.LinkedMultiValueMap;
6 import org.springframework.util.MultiValueMap;
7
8 import java.time.Duration;
9 import java.util.function.BiConsumer;
10 import java.util.stream.Stream;
11
12 import static org.assertj.core.api.Assertions.assertThat;
13 import static org.awaitility.Awaitility.await;
14
15
16 public class TestData
17 {
18         static void writeInputData(BiConsumer<String, Recording> consumer)
19         {
20                 Recording recording;
21
22                 recording = new Recording();
23                 recording.setUser("peter");
24                 recording.setSentence("Hallo Welt!");
25                 consumer.accept(recording.getUser(), recording);
26
27                 recording = new Recording();
28                 recording.setUser("klaus");
29                 recording.setSentence("Müsch gäb's auch!");
30                 consumer.accept(recording.getUser(), recording);
31
32                 recording = new Recording();
33                 recording.setUser("peter");
34                 recording.setSentence("Boäh, echt! ß mal nä Nümmäh!");
35                 consumer.accept(recording.getUser(), recording);
36         }
37
38         static void assertExpectedMessages(MultiValueMap<String, TestWord> receivedMessages)
39         {
40                 MultiValueMap<String, TestWord> expected = new LinkedMultiValueMap<>();
41                 expectedMessages.forEach(keyValue -> expected.add(keyValue.key, keyValue.value));
42                 await("Received expected messages")
43                                 .atMost(Duration.ofSeconds(5))
44                                 .untilAsserted(() -> expected.forEach((user, word) ->
45                                                 assertThat(receivedMessages.get(user)).containsExactlyElementsOf(word)));
46         }
47
48         static Stream<KeyValue<String, TestWord>> expectedMessages = Stream.of(
49                         KeyValue.pair(
50                                         "peter",
51                                         TestWord.of("peter", "Hallo")),
52                         KeyValue.pair(
53                                         "peter",
54                                         TestWord.of("peter", "Welt")),
55                         KeyValue.pair(
56                                         "klaus",
57                                         TestWord.of("klaus", "Müsch")),
58                         KeyValue.pair(
59                                         "klaus",
60                                         TestWord.of("klaus", "gäb")),
61                         KeyValue.pair(
62                                         "klaus",
63                                         TestWord.of("klaus", "s")),
64                         KeyValue.pair(
65                                         "klaus",
66                                         TestWord.of("klaus", "auch")),
67                         KeyValue.pair(
68                                         "peter",
69                                         TestWord.of("peter", "Boäh")),
70                         KeyValue.pair(
71                                         "peter",
72                                         TestWord.of("peter", "echt")),
73                         KeyValue.pair(
74                                         "peter",
75                                         TestWord.of("peter", "ß")),
76                         KeyValue.pair(
77                                         "peter",
78                                         TestWord.of("peter", "mal")),
79                         KeyValue.pair(
80                                         "peter",
81                                         TestWord.of("peter", "nä")),
82                         KeyValue.pair(
83                                         "peter",
84                                         TestWord.of("peter", "Nümmäh")));
85 }