X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryBookmarkDatabaseTest.java;h=c16ce9dfa27f6a0e1b992b83c0e7f030b9ec131d;hp=ce61ade1c67f9f667c82e50884b6de5461e3c71f;hb=7b55e0be6a3283e43a9bbab98f82aebdd948eb33;hpb=36b8e20651c14970ca30a1b8ed43af219b367bc9 diff --git a/src/test/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabaseTest.java b/src/test/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabaseTest.java index ce61ade..c16ce9d 100644 --- a/src/test/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabaseTest.java +++ b/src/test/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabaseTest.java @@ -1,11 +1,15 @@ package net.pterodactylus.sone.database.memory; import static com.google.common.base.Optional.fromNullable; +import static net.pterodactylus.sone.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.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; import java.util.HashMap; @@ -29,7 +33,8 @@ import org.mockito.stubbing.Answer; public class MemoryBookmarkDatabaseTest { private final MemoryDatabase memoryDatabase = mock(MemoryDatabase.class); - private final ConfigurationLoader configurationLoader = mock(ConfigurationLoader.class); + private final ConfigurationLoader configurationLoader = + mock(ConfigurationLoader.class); private final MemoryBookmarkDatabase bookmarkDatabase = new MemoryBookmarkDatabase(memoryDatabase, configurationLoader); private final Map posts = new HashMap(); @@ -49,14 +54,20 @@ public class MemoryBookmarkDatabaseTest { @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 @@ -72,6 +83,25 @@ 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 allPosts = new HashSet(posts.values()); for (Post post : allPosts) { @@ -88,11 +118,25 @@ public class MemoryBookmarkDatabaseTest { } @Test - public void addingABookmarkByIdBookmarksTheCorrectPost() { - Post randomPost = posts.values().iterator().next(); - bookmarkDatabase.bookmarkPost(randomPost.getId()); - assertThat(bookmarkDatabase.getBookmarkedPosts(), - contains(randomPost)); + public void startingTheDatabaseLoadsBookmarkedPosts() { + bookmarkDatabase.start(); + verify(configurationLoader).loadBookmarkedPosts(); + } + + @Test + public void stoppingTheDatabaseSavesTheBookmarkedPosts() { + bookmarkDatabase.stop(); + verify(configurationLoader).saveBookmarkedPosts(any(Set.class)); + } + + @Test + public void bookmarkedPostsIncludeNotYetLoadedPosts() { + bookmarkDatabase.bookmarkPost(posts.get("PostId1")); + bookmarkDatabase.bookmarkPost(createPost("PostId3")); + final Set bookmarkedPosts = + bookmarkDatabase.getBookmarkedPosts(); + assertThat(bookmarkedPosts, + contains(isPostWithId("PostId1"), isPostWithId("PostId3"))); } }