+ private static void assertRankingEqualsRankingFromLastMessage(TestUser user, Ranking ranking)
+ {
+ TestRanking testRanking = TestRanking.of(testEntriesOf(ranking.getEntries()));
+ assertRankingEqualsRankingFromLastMessage(user, testRanking);
+ }
+
+ private static TestEntry[] testEntriesOf(Entry... entries)
+ {
+ return Arrays
+ .stream(entries)
+ .map(entry -> TestEntry.of(
+ entry.getWord(),
+ entry.getCounter() == null
+ ? -1l
+ : entry.getCounter()))
+ .toArray(size -> new TestEntry[size]);
+ }
+
+ private static void assertRankingEqualsRankingFromLastMessage(TestUser user, TestRanking ranking)
+ {
+ assertThat(ranking).isEqualTo(getLastMessageFor(user));
+ }
+
+ private static TestRanking getLastMessageFor(TestUser user)
+ {
+ return getLastMessageFor(user, expectedMessages());
+ }
+
+ private static TestRanking getLastMessageFor(TestUser user, MultiValueMap<TestUser, TestRanking> messagesForUsers)
+ {
+ return messagesForUsers
+ .get(user)
+ .stream()
+ .reduce(null, (left, right) -> right);
+ }
+
+ private static KeyValue<TestUser, TestRanking>[] EXPECTED_MESSAGES = new KeyValue[]