splitter: 1.2.0 - Renamed classes for test-input/-output -- 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.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;
8
9 import java.time.Duration;
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 final String PETER = "peter";
19         static final String KLAUS = "klaus";
20
21
22         static final Stream<KeyValue<String, TestInputRecording>> getInputMessages()
23         {
24                 return Stream.of(INPUT_MESSAGES);
25         }
26
27         private static final KeyValue<String, TestInputRecording>[] INPUT_MESSAGES = new KeyValue[]
28         {
29                         new KeyValue<>(
30                                         PETER,
31                                         TestInputRecording.of(PETER, "Hallo Welt!")),
32                         new KeyValue<>(
33                                         KLAUS,
34                                         TestInputRecording.of(KLAUS, "Müsch gäb's auch!")),
35                         new KeyValue<>(
36                                         PETER,
37                                         TestInputRecording.of(PETER, "Boäh, echt! ß mal nä Nümmäh!")),
38         };
39
40         static void assertExpectedMessages(MultiValueMap<String, TestOutputWord> receivedMessages)
41         {
42                 await("Received expected messages")
43                                 .atMost(Duration.ofSeconds(5))
44                                 .untilAsserted(() -> expectedMessages().forEach((user, word) ->
45                                                 assertThat(receivedMessages.get(user)).containsExactlyElementsOf(word)));
46         }
47
48         private static final KeyValue<String, TestOutputWord>[] EXPECTED_MESSAGES = new KeyValue[]
49         {
50                         KeyValue.pair(
51                                         "peter",
52                                         TestOutputWord.of("peter", "Hallo")),
53                         KeyValue.pair(
54                                         "peter",
55                                         TestOutputWord.of("peter", "Welt")),
56                         KeyValue.pair(
57                                         "klaus",
58                                         TestOutputWord.of("klaus", "Müsch")),
59                         KeyValue.pair(
60                                         "klaus",
61                                         TestOutputWord.of("klaus", "gäb")),
62                         KeyValue.pair(
63                                         "klaus",
64                                         TestOutputWord.of("klaus", "s")),
65                         KeyValue.pair(
66                                         "klaus",
67                                         TestOutputWord.of("klaus", "auch")),
68                         KeyValue.pair(
69                                         "peter",
70                                         TestOutputWord.of("peter", "Boäh")),
71                         KeyValue.pair(
72                                         "peter",
73                                         TestOutputWord.of("peter", "echt")),
74                         KeyValue.pair(
75                                         "peter",
76                                         TestOutputWord.of("peter", "ß")),
77                         KeyValue.pair(
78                                         "peter",
79                                         TestOutputWord.of("peter", "mal")),
80                         KeyValue.pair(
81                                         "peter",
82                                         TestOutputWord.of("peter", "nä")),
83                         KeyValue.pair(
84                                         "peter",
85                                         TestOutputWord.of("peter", "Nümmäh")),
86         };
87
88         static MultiValueMap<String, TestOutputWord> expectedMessages()
89         {
90                 MultiValueMap<String, TestOutputWord> expectedMessages = new LinkedMultiValueMap<>();
91                 Stream
92                                 .of(EXPECTED_MESSAGES)
93                                 .forEach(keyValue -> expectedMessages.add(keyValue.key, keyValue.value));
94                 return expectedMessages;
95         }
96 }