1 package net.pterodactylus.sone.database.memory;
3 import static com.google.common.base.Optional.fromNullable;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.hamcrest.Matchers.contains;
6 import static org.hamcrest.Matchers.is;
7 import static org.mockito.Matchers.anyString;
8 import static org.mockito.Mockito.mock;
9 import static org.mockito.Mockito.when;
11 import java.util.HashMap;
12 import java.util.HashSet;
16 import net.pterodactylus.sone.data.Post;
18 import com.google.common.base.Optional;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.mockito.invocation.InvocationOnMock;
22 import org.mockito.stubbing.Answer;
25 * Unit test for {@link MemoryBookmarkDatabase}.
27 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
29 public class MemoryBookmarkDatabaseTest {
31 private final MemoryDatabase memoryDatabase = mock(MemoryDatabase.class);
32 private final MemoryBookmarkDatabase bookmarkDatabase =
33 new MemoryBookmarkDatabase(memoryDatabase);
34 private final Map<String, Post> posts = new HashMap<String, Post>();
37 public void setupMemoryDatabase() {
38 when(memoryDatabase.getPost(anyString())).thenAnswer(
39 new Answer<Optional<Post>>() {
41 public Optional<Post> answer(
42 InvocationOnMock invocation) {
44 posts.get(invocation.getArguments()[0]));
50 public void setupPosts() {
51 createPost("PostId1");
52 createPost("PostId2");
55 private void createPost(String postId) {
56 Post post = mock(Post.class);
57 when(post.getId()).thenReturn(postId);
58 posts.put(postId, post);
62 public void bookmarkDatabaseRetainsBookmarkedPosts() {
63 Set<Post> allPosts = new HashSet<Post>(posts.values());
64 for (Post post : allPosts) {
65 bookmarkDatabase.bookmarkPost(post);
67 assertThat(bookmarkDatabase.getBookmarkedPosts(), is(allPosts));
68 for (Post post : allPosts) {
69 assertThat(bookmarkDatabase.isPostBookmarked(post), is(true));
74 public void removingABookmarkRemovesTheCorrectBookmark() {
75 Set<Post> allPosts = new HashSet<Post>(posts.values());
76 for (Post post : allPosts) {
77 bookmarkDatabase.bookmarkPost(post);
79 Post randomPost = posts.values().iterator().next();
80 bookmarkDatabase.unbookmarkPost(randomPost);
81 allPosts.remove(randomPost);
82 assertThat(bookmarkDatabase.getBookmarkedPosts(), is(allPosts));
83 for (Post post : posts.values()) {
84 assertThat(bookmarkDatabase.isPostBookmarked(post),
85 is(!post.equals(randomPost)));
90 public void addingABookmarkByIdBookmarksTheCorrectPost() {
91 Post randomPost = posts.values().iterator().next();
92 bookmarkDatabase.bookmarkPost(randomPost.getId());
93 assertThat(bookmarkDatabase.getBookmarkedPosts(),
94 contains(randomPost));