X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabaseTest.java;h=db18cd2aa7fdb769e8b7d3b659a97de2c9e9fdd5;hb=ebd842a2ffdd117073401ce0f47a7dfd598c7a61;hp=056a06d1449870712096caf52bd756f352c8924e;hpb=f4f5fb752ff9aff0235a907e170c6961576562f6;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/database/memory/MemoryDatabaseTest.java b/src/test/java/net/pterodactylus/sone/database/memory/MemoryDatabaseTest.java index 056a06d..db18cd2 100644 --- a/src/test/java/net/pterodactylus/sone/database/memory/MemoryDatabaseTest.java +++ b/src/test/java/net/pterodactylus/sone/database/memory/MemoryDatabaseTest.java @@ -18,13 +18,21 @@ package net.pterodactylus.sone.database.memory; import static com.google.common.base.Optional.of; +import static java.util.UUID.randomUUID; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.AlbumImpl; +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.PostReply; +import net.pterodactylus.sone.data.Sone; import com.google.common.base.Optional; +import org.junit.Before; import org.junit.Test; /** @@ -34,11 +42,65 @@ import org.junit.Test; */ public class MemoryDatabaseTest { + private static final String SONE_ID = "sone"; + private static final String RECIPIENT_ID = "recipient"; private final MemoryDatabase memoryDatabase = new MemoryDatabase(null, null); + private final Sone sone = mock(Sone.class); + + @Before + public void setupSone() { + when(sone.getId()).thenReturn(SONE_ID); + } + + @Test + public void postRecipientsAreDetectedCorrectly() { + Post postWithRecipient = createPost(of(RECIPIENT_ID)); + memoryDatabase.storePost(postWithRecipient); + Post postWithoutRecipient = createPost(Optional.absent()); + memoryDatabase.storePost(postWithoutRecipient); + assertThat(memoryDatabase.getDirectedPosts(RECIPIENT_ID), + contains(postWithRecipient)); + } + + private Post createPost(Optional recipient) { + Post postWithRecipient = mock(Post.class); + when(postWithRecipient.getId()).thenReturn(randomUUID().toString()); + when(postWithRecipient.getSone()).thenReturn(sone); + when(postWithRecipient.getRecipientId()).thenReturn(recipient); + return postWithRecipient; + } + + @Test + public void postRepliesAreManagedCorrectly() { + Post firstPost = createPost(Optional.absent()); + PostReply firstPostFirstReply = createPostReply(firstPost, 1000L); + Post secondPost = createPost(Optional.absent()); + PostReply secondPostFirstReply = createPostReply(secondPost, 1000L); + PostReply secondPostSecondReply = createPostReply(secondPost, 2000L); + memoryDatabase.storePost(firstPost); + memoryDatabase.storePost(secondPost); + memoryDatabase.storePostReply(firstPostFirstReply); + memoryDatabase.storePostReply(secondPostFirstReply); + memoryDatabase.storePostReply(secondPostSecondReply); + assertThat(memoryDatabase.getReplies(firstPost.getId()), + contains(firstPostFirstReply)); + assertThat(memoryDatabase.getReplies(secondPost.getId()), + contains(secondPostFirstReply, secondPostSecondReply)); + } + + private PostReply createPostReply(Post post, long time) { + PostReply postReply = mock(PostReply.class); + when(postReply.getId()).thenReturn(randomUUID().toString()); + when(postReply.getTime()).thenReturn(time); + when(postReply.getPost()).thenReturn(of(post)); + final String postId = post.getId(); + when(postReply.getPostId()).thenReturn(postId); + return postReply; + } @Test public void testBasicAlbumFunctionality() { - Album newAlbum = new AlbumImpl(); + Album newAlbum = new AlbumImpl(mock(Sone.class)); assertThat(memoryDatabase.getAlbum(newAlbum.getId()), is(Optional.absent())); memoryDatabase.storeAlbum(newAlbum); assertThat(memoryDatabase.getAlbum(newAlbum.getId()), is(of(newAlbum)));