Use a builder-style mocker for post replies, too.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 30 Oct 2013 06:20:28 +0000 (07:20 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 28 Feb 2014 21:25:50 +0000 (22:25 +0100)
src/test/java/net/pterodactylus/sone/data/Mocks.java
src/test/java/net/pterodactylus/sone/fcp/DeleteReplyCommandTest.java
src/test/java/net/pterodactylus/sone/fcp/GetPostCommandTest.java

index 21e5925..98de409 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.data;
 
+import static com.google.common.base.Optional.absent;
 import static com.google.common.base.Optional.of;
 import static com.google.common.collect.ArrayListMultimap.create;
 import static com.google.common.collect.Ordering.from;
@@ -89,12 +90,8 @@ public class Mocks {
                return new PostMocker(postId, sone);
        }
 
-       public PostReply mockPostReply(Sone sone, String replyId) {
-               PostReply postReply = mock(PostReply.class);
-               when(postReply.getId()).thenReturn(replyId);
-               when(postReply.getSone()).thenReturn(sone);
-               when(database.getPostReply(eq(replyId))).thenReturn(of(postReply));
-               return postReply;
+       public PostReplyMocker mockPostReply(Sone sone, String replyId) {
+               return new PostReplyMocker(replyId, sone);
        }
 
        public class SoneMocker {
@@ -171,4 +168,33 @@ public class Mocks {
 
        }
 
+       public class PostReplyMocker {
+
+               private final PostReply postReply = mock(PostReply.class);
+               private final String id;
+               private final Sone sone;
+               private Optional<Post> post = absent();
+
+               public PostReplyMocker(String id, Sone sone) {
+                       this.id = id;
+                       this.sone = sone;
+               }
+
+               public PostReplyMocker inReplyTo(Post post) {
+                       this.post = of(post);
+                       return this;
+               }
+
+               public PostReply create() {
+                       when(postReply.getId()).thenReturn(id);
+                       when(postReply.getSone()).thenReturn(sone);
+                       when(database.getPostReply(eq(id))).thenReturn(of(postReply));
+                       if (post.isPresent()) {
+                               postReplies.put(post.get(), postReply);
+                       }
+                       return postReply;
+               }
+
+       }
+
 }
index 122074f..8b7cadd 100644 (file)
@@ -49,7 +49,7 @@ public class DeleteReplyCommandTest {
        @Test
        public void verifyThatDeletingAReplyWorks() throws FcpException {
                Sone sone = mocks.mockSone("SoneId").local().create();
-               PostReply postReply = mocks.mockPostReply(sone, "ReplyId");
+               PostReply postReply = mocks.mockPostReply(sone, "ReplyId").create();
                ArgumentCaptor<PostReply> postReplyCaptor = forClass(PostReply.class);
                doNothing().when(mocks.core).deleteReply(postReplyCaptor.capture());
                SimpleFieldSet deleteReplyFieldSet = new SimpleFieldSetBuilder()
@@ -83,7 +83,7 @@ public class DeleteReplyCommandTest {
        @Test
        public void verifyThatDeletingAReplyFromANonLocalSoneCausesAnError() throws FcpException {
                Sone sone = mocks.mockSone("SoneId").create();
-               mocks.mockPostReply(sone, "ReplyId");
+               mocks.mockPostReply(sone, "ReplyId").create();
                SimpleFieldSet deleteReplyFieldSet = new SimpleFieldSetBuilder()
                                .put("Message", "DeleteReply")
                                .put("Reply", "ReplyId")
index c6664b9..d303535 100644 (file)
@@ -81,9 +81,9 @@ public class GetPostCommandTest {
        public void verifyThatGettingAPostWithRepliesWorks() throws FcpException, FSParseException {
                Sone sone = mocks.mockSone("SoneId").create();
                Post post = preparePostWithoutRecipient(sone);
-               PostReply postReply1 = mocks.mockPostReply(sone, "Reply1");
+               PostReply postReply1 = mocks.mockPostReply(sone, "Reply1").create();
                when(postReply1.getText()).thenReturn("Reply 1.");
-               PostReply postReply2 = mocks.mockPostReply(sone, "Reply2");
+               PostReply postReply2 = mocks.mockPostReply(sone, "Reply2").create();
                when(postReply2.getText()).thenReturn("Reply 2.");
                when(post.getReplies()).thenReturn(asList(postReply1, postReply2));
                SimpleFieldSet getPostFieldSet = new SimpleFieldSetBuilder()