X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FMocks.java;h=e4449c43ab4c6a0931d2d1c376a6e40edfa3ec40;hb=2d4c22347647848bb1735aa8217591ed00a6f036;hp=0e8a7313de9a12dc8af394339130620790cb9456;hpb=634e4f484de3e51a55e4dae41ed8481921597733;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 0e8a731..e4449c4 100644 --- a/src/test/java/net/pterodactylus/sone/data/Mocks.java +++ b/src/test/java/net/pterodactylus/sone/data/Mocks.java @@ -30,19 +30,35 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.net.URI; +import java.net.URISyntaxException; 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.core.Options; +import net.pterodactylus.sone.core.Options.DefaultOption; +import net.pterodactylus.sone.core.Options.Option; +import net.pterodactylus.sone.core.Options.OptionWatcher; +import net.pterodactylus.sone.core.Preferences; +import net.pterodactylus.sone.core.SoneInserter; import net.pterodactylus.sone.data.impl.DefaultPostBuilder; import net.pterodactylus.sone.data.impl.DefaultPostReplyBuilder; import net.pterodactylus.sone.database.Database; import net.pterodactylus.sone.database.PostReplyBuilder; +import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired; +import net.pterodactylus.sone.utils.IntegerRangePredicate; +import net.pterodactylus.sone.web.WebInterface; +import net.pterodactylus.sone.web.page.FreenetRequest; + +import freenet.clients.http.HTTPRequestImpl; +import freenet.support.api.HTTPRequest; import com.google.common.base.Function; import com.google.common.base.Optional; +import com.google.common.base.Predicates; import com.google.common.collect.FluentIterable; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; @@ -64,12 +80,15 @@ public class Mocks { 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 final WebInterface webInterface; public Mocks() { database = mockDatabase(); core = mockCore(database); + webInterface = mockWebInterface(core); when(database.getSone()).thenReturn(new Function>() { @Override public Optional apply(String soneId) { @@ -88,6 +107,8 @@ public class Mocks { return FluentIterable.from(sones.values()).filter(Sone.LOCAL_SONE_FILTER).toList(); } }); + Options options = createOptions(); + when(core.getPreferences()).thenReturn(new Preferences(options)); when(database.getDirectedPosts(anyString())).then(new Answer>() { @Override public Collection answer(InvocationOnMock invocation) throws Throwable { @@ -96,6 +117,22 @@ public class Mocks { }); } + private Options createOptions() { + Options options = new Options(); + options.addIntegerOption("InsertionDelay", new DefaultOption(60, new IntegerRangePredicate(0, Integer.MAX_VALUE))); + options.addIntegerOption("PostsPerPage", new DefaultOption(10, new IntegerRangePredicate(1, Integer.MAX_VALUE))); + options.addIntegerOption("ImagesPerPage", new DefaultOption(9, new IntegerRangePredicate(1, Integer.MAX_VALUE))); + options.addIntegerOption("CharactersPerPost", new DefaultOption(400, Predicates.or(new IntegerRangePredicate(50, Integer.MAX_VALUE), Predicates.equalTo(-1)))); + options.addIntegerOption("PostCutOffLength", new DefaultOption(200, Predicates.or(new IntegerRangePredicate(50, Integer.MAX_VALUE), Predicates.equalTo(-1)))); + options.addBooleanOption("RequireFullAccess", new DefaultOption(false)); + options.addIntegerOption("PositiveTrust", new DefaultOption(75, new IntegerRangePredicate(0, 100))); + options.addIntegerOption("NegativeTrust", new DefaultOption(-25, new IntegerRangePredicate(-100, 100))); + options.addStringOption("TrustComment", new DefaultOption("Set from Sone Web Interface")); + options.addBooleanOption("ActivateFcpInterface", new DefaultOption(false)); + options.addIntegerOption("FcpFullAccessRequired", new DefaultOption(2)); + return options; + } + private static Core mockCore(Database database) { Core core = mock(Core.class); when(core.getDatabase()).thenReturn(database); @@ -111,6 +148,12 @@ public class Mocks { return database; } + private static WebInterface mockWebInterface(Core core) { + WebInterface webInterface = mock(WebInterface.class); + when(webInterface.getCore()).thenReturn(core); + return webInterface; + } + public SoneMocker mockSone(String id) { return new SoneMocker(id); } @@ -123,6 +166,13 @@ public class Mocks { return new PostReplyMocker(replyId, sone); } + public FreenetRequest mockRequest(String path) throws URISyntaxException { + HTTPRequest httpRequest = new HTTPRequestImpl(new URI(path), "GET"); + FreenetRequest request = mock(FreenetRequest.class); + when(request.getHttpRequest()).thenReturn(httpRequest); + return request; + } + public class SoneMocker { private final Sone mockedSone = mock(Sone.class); @@ -258,16 +308,16 @@ public class Mocks { return Ordering.from(Reply.TIME_COMPARATOR).sortedCopy(postReplies.get(post)); } }); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override - public Object answer(InvocationOnMock invocation) throws Throwable { + public Void answer(InvocationOnMock invocation) throws Throwable { postLikingSones.put(post, (Sone) invocation.getArguments()[0]); return null; } }).when(post).like(Matchers.any()); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override - public Object answer(InvocationOnMock invocation) throws Throwable { + public Void answer(InvocationOnMock invocation) throws Throwable { postLikingSones.remove(post, (Sone) invocation.getArguments()[0]); return null; } @@ -323,6 +373,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; } }