Mock Core.getSones().
[Sone.git] / src / test / java / net / pterodactylus / sone / data / Mocks.java
index 51a24fd..8c8c93a 100644 (file)
@@ -21,8 +21,8 @@ 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;
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 import net.pterodactylus.sone.core.Core;
 import net.pterodactylus.sone.data.impl.DefaultPostBuilder;
@@ -38,6 +39,7 @@ 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.Multimap;
@@ -53,7 +55,7 @@ import org.mockito.stubbing.Answer;
 public class Mocks {
 
        private final Multimap<Sone, Post> sonePosts = create();
-       private final Collection<Sone> sones = newHashSet();
+       private final Map<String, Sone> sones = newHashMap();
        private final Multimap<Post, PostReply> postReplies = create();
        private final Multimap<String, Post> directedPosts = create();
        public final Database database;
@@ -62,10 +64,22 @@ public class Mocks {
        public Mocks() {
                database = mockDatabase();
                core = mockCore(database);
+               when(database.getSone()).thenReturn(new Function<String, Optional<Sone>>() {
+                       @Override
+                       public Optional<Sone> apply(String soneId) {
+                               return (soneId == null) ? Optional.<Sone>absent() : fromNullable(sones.get(soneId));
+                       }
+               });
+               when(core.getSones()).then(new Answer<Collection<Sone>>() {
+                       @Override
+                       public Collection<Sone> answer(InvocationOnMock invocation) throws Throwable {
+                               return sones.values();
+                       }
+               });
                when(core.getLocalSones()).then(new Answer<Collection<Sone>>() {
                        @Override
                        public Collection<Sone> 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<Collection<Post>>() {
@@ -184,7 +198,7 @@ public class Mocks {
                                }
                        });
                        when(mockedSone.toString()).thenReturn(String.format("Sone[%s]", id));
-                       sones.add(mockedSone);
+                       sones.put(id, mockedSone);
                        return mockedSone;
                }