X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FMocks.java;h=f1b0a09b2bf877b6306095a399d73d479b4acd7b;hb=e90229826e64a6ac2a6e3fcc763d3d672efda419;hp=51a24fd1c3b00649b9e193d97450e77b77ef8a68;hpb=4ec09048a1e0dfbd8c8f8aeed550adb80cd6d7c6;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/data/Mocks.java b/src/test/java/net/pterodactylus/sone/data/Mocks.java index 51a24fd..f1b0a09 100644 --- a/src/test/java/net/pterodactylus/sone/data/Mocks.java +++ b/src/test/java/net/pterodactylus/sone/data/Mocks.java @@ -21,16 +21,19 @@ import static com.google.common.base.Optional.absent; import static com.google.common.base.Optional.fromNullable; import static com.google.common.base.Optional.of; import static com.google.common.collect.ArrayListMultimap.create; +import static com.google.common.collect.Maps.newHashMap; import static com.google.common.collect.Ordering.from; -import static com.google.common.collect.Sets.newHashSet; import static java.util.Collections.emptySet; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.Set; import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.data.impl.DefaultPostBuilder; @@ -38,10 +41,14 @@ import net.pterodactylus.sone.data.impl.DefaultPostReplyBuilder; import net.pterodactylus.sone.database.Database; import net.pterodactylus.sone.database.PostReplyBuilder; +import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.FluentIterable; +import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.google.common.collect.Ordering; +import com.google.common.collect.SetMultimap; +import org.mockito.Matchers; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -53,19 +60,33 @@ import org.mockito.stubbing.Answer; public class Mocks { private final Multimap sonePosts = create(); - private final Collection sones = newHashSet(); + private final Map sones = newHashMap(); private final Multimap postReplies = create(); private final Multimap directedPosts = create(); + private final SetMultimap postLikingSones = HashMultimap.create(); + private final SetMultimap postReplyLikingSones = HashMultimap.create(); public final Database database; public final Core core; public Mocks() { database = mockDatabase(); core = mockCore(database); + when(database.getSone()).thenReturn(new Function>() { + @Override + public Optional apply(String soneId) { + return (soneId == null) ? Optional.absent() : fromNullable(sones.get(soneId)); + } + }); + when(core.getSones()).then(new Answer>() { + @Override + public Collection answer(InvocationOnMock invocation) throws Throwable { + return sones.values(); + } + }); when(core.getLocalSones()).then(new Answer>() { @Override public Collection answer(InvocationOnMock invocation) throws Throwable { - return FluentIterable.from(sones).filter(Sone.LOCAL_SONE_FILTER).toList(); + return FluentIterable.from(sones.values()).filter(Sone.LOCAL_SONE_FILTER).toList(); } }); when(database.getDirectedPosts(anyString())).then(new Answer>() { @@ -184,7 +205,7 @@ public class Mocks { } }); when(mockedSone.toString()).thenReturn(String.format("Sone[%s]", id)); - sones.add(mockedSone); + sones.put(id, mockedSone); return mockedSone; } @@ -238,6 +259,26 @@ public class Mocks { return Ordering.from(Reply.TIME_COMPARATOR).sortedCopy(postReplies.get(post)); } }); + doAnswer(new Answer() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + postLikingSones.put(post, (Sone) invocation.getArguments()[0]); + return null; + } + }).when(post).like(Matchers.any()); + doAnswer(new Answer() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + postLikingSones.remove(post, (Sone) invocation.getArguments()[0]); + return null; + } + }).when(post).unlike(Matchers.any()); + when(post.getLikes()).thenAnswer(new Answer>() { + @Override + public Set answer(InvocationOnMock invocation) throws Throwable { + return postLikingSones.get(post); + } + }); return post; } @@ -283,6 +324,26 @@ public class Mocks { if (text.isPresent()) { when(postReply.getText()).thenReturn(text.get()); } + doAnswer(new Answer() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + postReplyLikingSones.put(postReply, (Sone) invocation.getArguments()[0]); + return null; + } + }).when(postReply).like(Matchers.any()); + doAnswer(new Answer() { + @Override + public Void answer(InvocationOnMock invocation) throws Throwable { + postReplyLikingSones.remove(postReply, invocation.getArguments()[0]); + return null; + } + }).when(postReply).unlike(Matchers.any()); + when(postReply.getLikes()).thenAnswer(new Answer>() { + @Override + public Set answer(InvocationOnMock invocation) throws Throwable { + return postReplyLikingSones.get(postReply); + } + }); return postReply; } }