splitter: 1.2.0 - Separated test-data in class `TestData` -- ALIGN
[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                                         new TestWord("peter", "Hallo")),
52                         KeyValue.pair(
53                                         "peter",
54                                         new TestWord("peter", "Welt")),
55                         KeyValue.pair(
56                                         "klaus",
57                                         new TestWord("klaus", "Müsch")),
58                         KeyValue.pair(
59                                         "klaus",
60                                         new TestWord("klaus", "gäb")),
61                         KeyValue.pair(
62                                         "klaus",
63                                         new TestWord("klaus", "s")),
64                         KeyValue.pair(
65                                         "klaus",
66                                         new TestWord("klaus", "auch")),
67                         KeyValue.pair(
68                                         "peter",
69                                         new TestWord("peter", "Boäh")),
70                         KeyValue.pair(
71                                         "peter",
72                                         new TestWord("peter", "echt")),
73                         KeyValue.pair(
74                                         "peter",
75                                         new TestWord("peter", "ß")),
76                         KeyValue.pair(
77                                         "peter",
78                                         new TestWord("peter", "mal")),
79                         KeyValue.pair(
80                                         "peter",
81                                         new TestWord("peter", "nä")),
82                         KeyValue.pair(
83                                         "peter",
84                                         new TestWord("peter", "Nümmäh")));
85 }