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 net.pterodactylus.sone.data.Post;
-import com.google.common.base.Optional;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
@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
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")));
+ }
+
}