Add tests for encoding a single post.
[Sone.git] / src / test / java / net / pterodactylus / sone / fcp / AbstractSoneCommandTest.java
index 5db07ee..c50d9ca 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.fcp;
 
+import static com.google.common.base.Optional.fromNullable;
 import static com.google.common.base.Optional.of;
 import static java.util.Arrays.asList;
 import static java.util.UUID.randomUUID;
@@ -324,7 +325,8 @@ public class AbstractSoneCommandTest {
 
        @Test
        public void testParsingAPost() throws FcpException {
-               Post post = createPost();
+               Sone sone = createSone("jXH8d-eFdm14R69WyaCgQoSjaY0jl-Ut6etlXjK0e6E", "Test", "First", "M.", "Last", (long) (Math.random() * Long.MAX_VALUE));
+               Post post = createPost(sone, null, (long) (Math.random() * Long.MAX_VALUE), "Some Text.");
                when(database.getPost(eq(post.getId()))).thenReturn(of(post));
                SimpleFieldSet postFieldSet = new SimpleFieldSetBuilder().put("Post", post.getId()).get();
                Post parsedPost = abstractSoneCommand.getPost(postFieldSet, "Post");
@@ -332,15 +334,20 @@ public class AbstractSoneCommandTest {
                assertThat(parsedPost, is(post));
        }
 
-       private Post createPost() {
+       private Post createPost(Sone sone, String recipient, long time, String text) {
                Post post = mock(Post.class);
                when(post.getId()).thenReturn(randomUUID().toString());
+               when(post.getSone()).thenReturn(sone);
+               when(post.getRecipientId()).thenReturn(fromNullable(recipient));
+               when(post.getTime()).thenReturn(time);
+               when(post.getText()).thenReturn(text);
                return post;
        }
 
        @Test(expected = FcpException.class)
        public void testThatTryingToParseANonExistingPostCausesAnError() throws FcpException {
-               Post post = createPost();
+               Sone sone = createSone("jXH8d-eFdm14R69WyaCgQoSjaY0jl-Ut6etlXjK0e6E", "Test", "First", "M.", "Last", (long) (Math.random() * Long.MAX_VALUE));
+               Post post = createPost(sone, null, (long) (Math.random() * Long.MAX_VALUE), "Some Text.");
                when(database.getPost(Matchers.<String>any())).thenReturn(Optional.<Post>absent());
                SimpleFieldSet postFieldSet = new SimpleFieldSetBuilder().put("Post", post.getId()).get();
                abstractSoneCommand.getPost(postFieldSet, "Post");
@@ -382,4 +389,70 @@ public class AbstractSoneCommandTest {
                abstractSoneCommand.getReply(replyFieldSet, "Reply");
        }
 
+       @Test
+       public void testEncodingAPostWithoutRecipientAndReplies() throws FSParseException {
+               Sone sone = createSone("jXH8d-eFdm14R69WyaCgQoSjaY0jl-Ut6etlXjK0e6E", "Test", "First", "M.", "Last", (long) (Math.random() * Long.MAX_VALUE));
+               Post post = createPost(sone, null, (long) (Math.random() * Long.MAX_VALUE), "Some Text.");
+               SimpleFieldSet postFieldSet = abstractSoneCommand.encodePost(post, "Post.");
+               assertThat(postFieldSet, notNullValue());
+               assertThat(postFieldSet.get("Post.ID"), is(post.getId()));
+               assertThat(postFieldSet.get("Post.Sone"), is(sone.getId()));
+               assertThat(postFieldSet.get("Post.Recipient"), nullValue());
+               assertThat(postFieldSet.getLong("Post.Time"), is(post.getTime()));
+               assertThat(postFieldSet.get("Post.Text"), is(post.getText()));
+       }
+
+       @Test
+       public void testEncodingAPostWithRecipientWithoutReplies() throws FSParseException {
+               Sone sone = createSone("jXH8d-eFdm14R69WyaCgQoSjaY0jl-Ut6etlXjK0e6E", "Test", "First", "M.", "Last", (long) (Math.random() * Long.MAX_VALUE));
+               Post post = createPost(sone, "KpoohJSbZGltHHG-YsxKV8ojjS5gwScRv50kl3AkLXg", (long) (Math.random() * Long.MAX_VALUE), "Some Text.");
+               SimpleFieldSet postFieldSet = abstractSoneCommand.encodePost(post, "Post.");
+               assertThat(postFieldSet, notNullValue());
+               assertThat(postFieldSet.get("Post.ID"), is(post.getId()));
+               assertThat(postFieldSet.get("Post.Sone"), is(sone.getId()));
+               assertThat(postFieldSet.get("Post.Recipient"), is("KpoohJSbZGltHHG-YsxKV8ojjS5gwScRv50kl3AkLXg"));
+               assertThat(postFieldSet.getLong("Post.Time"), is(post.getTime()));
+               assertThat(postFieldSet.get("Post.Text"), is(post.getText()));
+       }
+
+       @Test
+       public void testEncodingAPostWithoutRecipientWithReplies() throws FSParseException {
+               Sone sone = createSone("jXH8d-eFdm14R69WyaCgQoSjaY0jl-Ut6etlXjK0e6E", "Test", "First", "M.", "Last", (long) (Math.random() * Long.MAX_VALUE));
+               Post post = createPost(sone, null, (long) (Math.random() * Long.MAX_VALUE), "Some Text.");
+               PostReply postReply = createPostReply(sone, "Reply.");
+               when(post.getReplies()).thenReturn(asList(postReply));
+               SimpleFieldSet postFieldSet = abstractSoneCommand.encodePostWithReplies(post, "Post.");
+               assertThat(postFieldSet, notNullValue());
+               assertThat(postFieldSet.get("Post.ID"), is(post.getId()));
+               assertThat(postFieldSet.get("Post.Sone"), is(sone.getId()));
+               assertThat(postFieldSet.get("Post.Recipient"), nullValue());
+               assertThat(postFieldSet.getLong("Post.Time"), is(post.getTime()));
+               assertThat(postFieldSet.get("Post.Text"), is(post.getText()));
+               assertThat(postFieldSet.getInt("Post.Replies.Count"), is(1));
+               assertThat(postFieldSet.get("Post.Replies.0.ID"), is(postReply.getId()));
+               assertThat(postFieldSet.get("Post.Replies.0.Sone"), is(postReply.getSone().getId()));
+               assertThat(postFieldSet.getLong("Post.Replies.0.Time"), is(postReply.getTime()));
+               assertThat(postFieldSet.get("Post.Replies.0.Text"), is(postReply.getText()));
+       }
+
+       @Test
+       public void testEncodingAPostWithRecipientAndReplies() throws FSParseException {
+               Sone sone = createSone("jXH8d-eFdm14R69WyaCgQoSjaY0jl-Ut6etlXjK0e6E", "Test", "First", "M.", "Last", (long) (Math.random() * Long.MAX_VALUE));
+               Post post = createPost(sone, "KpoohJSbZGltHHG-YsxKV8ojjS5gwScRv50kl3AkLXg", (long) (Math.random() * Long.MAX_VALUE), "Some Text.");
+               PostReply postReply = createPostReply(sone, "Reply.");
+               when(post.getReplies()).thenReturn(asList(postReply));
+               SimpleFieldSet postFieldSet = abstractSoneCommand.encodePostWithReplies(post, "Post.");
+               assertThat(postFieldSet, notNullValue());
+               assertThat(postFieldSet.get("Post.ID"), is(post.getId()));
+               assertThat(postFieldSet.get("Post.Sone"), is(sone.getId()));
+               assertThat(postFieldSet.get("Post.Recipient"), is("KpoohJSbZGltHHG-YsxKV8ojjS5gwScRv50kl3AkLXg"));
+               assertThat(postFieldSet.getLong("Post.Time"), is(post.getTime()));
+               assertThat(postFieldSet.get("Post.Text"), is(post.getText()));
+               assertThat(postFieldSet.getInt("Post.Replies.Count"), is(1));
+               assertThat(postFieldSet.get("Post.Replies.0.ID"), is(postReply.getId()));
+               assertThat(postFieldSet.get("Post.Replies.0.Sone"), is(postReply.getSone().getId()));
+               assertThat(postFieldSet.getLong("Post.Replies.0.Time"), is(postReply.getTime()));
+               assertThat(postFieldSet.get("Post.Replies.0.Text"), is(postReply.getText()));
+       }
+
 }