1 package net.pterodactylus.sone.web;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.containsInAnyOrder;
5 import static org.hamcrest.Matchers.is;
6 import static org.mockito.Mockito.mock;
7 import static org.mockito.Mockito.when;
9 import java.util.Collection;
10 import java.util.HashSet;
13 import net.pterodactylus.sone.data.Post;
14 import net.pterodactylus.sone.web.page.FreenetTemplatePage.RedirectException;
16 import org.junit.Test;
19 * Unit test for {@link BookmarksPage}.
21 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
23 public class BookmarksPageTest extends WebPageTest {
25 private final BookmarksPage page = new BookmarksPage(template, webInterface);
28 public void pageReturnsCorrectPath() {
29 assertThat(page.getPath(), is("bookmarks.html"));
33 @SuppressWarnings("unchecked")
34 public void pageSetsCorrectPostsInTemplateContext() throws RedirectException {
35 Post post1 = createPost(true);
36 Post post2 = createPost(true);
37 Post post3 = createPost(true);
38 Set<Post> bookmarkedPosts = createBookmarkedPosts(post1, post2, post3);
39 when(core.getBookmarkedPosts()).thenReturn(bookmarkedPosts);
40 when(core.getPreferences().getPostsPerPage()).thenReturn(5);
41 page.processTemplate(freenetRequest, templateContext);
42 assertThat((Collection<Post>) templateContext.get("posts"), containsInAnyOrder(post1, post2, post3));
43 assertThat(((Boolean) templateContext.get("postsNotLoaded")), is(false));
46 private Set<Post> createBookmarkedPosts(Post post1, Post post2, Post post3) {
47 Set<Post> bookmarkedPosts = new HashSet<>();
48 bookmarkedPosts.add(post1);
49 bookmarkedPosts.add(post2);
50 bookmarkedPosts.add(post3);
51 return bookmarkedPosts;
55 @SuppressWarnings("unchecked")
56 public void notLoadedPostsAreNotIncludedButAFlagIsSet() throws RedirectException {
57 Post post1 = createPost(true);
58 Post post2 = createPost(true);
59 Post post3 = createPost(false);
60 Set<Post> bookmarkedPosts = createBookmarkedPosts(post1, post2, post3);
61 when(core.getBookmarkedPosts()).thenReturn(bookmarkedPosts);
62 when(core.getPreferences().getPostsPerPage()).thenReturn(5);
63 page.processTemplate(freenetRequest, templateContext);
64 assertThat((Collection<Post>) templateContext.get("posts"), containsInAnyOrder(post1, post2));
65 assertThat(((Boolean) templateContext.get("postsNotLoaded")), is(true));
68 private Post createPost(boolean postLoaded) {
69 return when(mock(Post.class).isLoaded()).thenReturn(postLoaded).getMock();