Replace unnecessary type parameters with <>
[Sone.git] / src / test / java / net / pterodactylus / sone / database / memory / MemoryBookmarkDatabaseTest.java
index 7a2fc0a..188b740 100644 (file)
@@ -1,11 +1,13 @@
 package net.pterodactylus.sone.database.memory;
 
-import static com.google.common.base.Optional.fromNullable;
+import static net.pterodactylus.sone.test.Matchers.isPostWithId;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.is;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -16,7 +18,6 @@ import java.util.Set;
 
 import net.pterodactylus.sone.data.Post;
 
-import com.google.common.base.Optional;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
@@ -24,8 +25,6 @@ import org.mockito.stubbing.Answer;
 
 /**
  * Unit test for {@link MemoryBookmarkDatabase}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public class MemoryBookmarkDatabaseTest {
 
@@ -34,36 +33,41 @@ public class MemoryBookmarkDatabaseTest {
                        mock(ConfigurationLoader.class);
        private final MemoryBookmarkDatabase bookmarkDatabase =
                        new MemoryBookmarkDatabase(memoryDatabase, configurationLoader);
-       private final Map<String, Post> posts = new HashMap<String, Post>();
+       private final Map<String, Post> posts = new HashMap<>();
 
        @Before
        public void setupMemoryDatabase() {
                when(memoryDatabase.getPost(anyString())).thenAnswer(
-                               new Answer<Optional<Post>>() {
+                               new Answer<Post>() {
                                        @Override
-                                       public Optional<Post> answer(
+                                       public Post answer(
                                                        InvocationOnMock invocation) {
-                                               return fromNullable(
-                                                               posts.get(invocation.getArguments()[0]));
+                                               return posts.get(invocation.getArguments()[0]);
                                        }
                                });
        }
 
        @Before
        public void setupPosts() {
-               createPost("PostId1");
-               createPost("PostId2");
+               createAndRegisterPost("PostId1");
+               createAndRegisterPost("PostId2");
        }
 
-       private void createPost(String postId) {
+       private Post createAndRegisterPost(String postId) {
+               Post post = createPost(postId);
+               posts.put(postId, post);
+               return post;
+       }
+
+       private Post createPost(String postId) {
                Post post = mock(Post.class);
                when(post.getId()).thenReturn(postId);
-               posts.put(postId, post);
+               return post;
        }
 
        @Test
        public void bookmarkDatabaseRetainsBookmarkedPosts() {
-               Set<Post> allPosts = new HashSet<Post>(posts.values());
+               Set<Post> allPosts = new HashSet<>(posts.values());
                for (Post post : allPosts) {
                        bookmarkDatabase.bookmarkPost(post);
                }
@@ -74,8 +78,27 @@ public class MemoryBookmarkDatabaseTest {
        }
 
        @Test
+       public void bookmarkingAPostSavesTheDatabase() {
+               for (Post post : posts.values()) {
+                       bookmarkDatabase.bookmarkPost(post);
+               }
+               verify(configurationLoader, times(posts.size()))
+                               .saveBookmarkedPosts(any(Set.class));
+       }
+
+       @Test
+       public void unbookmarkingAPostSavesTheDatabase() {
+               for (Post post : posts.values()) {
+                       bookmarkDatabase.bookmarkPost(post);
+                       bookmarkDatabase.unbookmarkPost(post);
+               }
+               verify(configurationLoader, times(posts.size() * 2))
+                               .saveBookmarkedPosts(any(Set.class));
+       }
+
+       @Test
        public void removingABookmarkRemovesTheCorrectBookmark() {
-               Set<Post> allPosts = new HashSet<Post>(posts.values());
+               Set<Post> allPosts = new HashSet<>(posts.values());
                for (Post post : allPosts) {
                        bookmarkDatabase.bookmarkPost(post);
                }
@@ -101,4 +124,14 @@ public class MemoryBookmarkDatabaseTest {
                verify(configurationLoader).saveBookmarkedPosts(any(Set.class));
        }
 
+       @Test
+       public void bookmarkedPostsIncludeNotYetLoadedPosts() {
+               bookmarkDatabase.bookmarkPost(posts.get("PostId1"));
+               bookmarkDatabase.bookmarkPost(createPost("PostId3"));
+               final Set<Post> bookmarkedPosts =
+                               bookmarkDatabase.getBookmarkedPosts();
+               assertThat(bookmarkedPosts,
+                               contains(isPostWithId("PostId1"), isPostWithId("PostId3")));
+       }
+
 }