1 package net.pterodactylus.sone.web;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.contains;
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;
15 import net.pterodactylus.util.collection.Pagination;
17 import org.junit.Test;
20 * Unit test for {@link BookmarksPage}.
22 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
24 public class BookmarksPageTest extends WebPageTest {
26 private final BookmarksPage page = new BookmarksPage(template, webInterface);
29 public void pageReturnsCorrectPath() {
30 assertThat(page.getPath(), is("bookmarks.html"));
34 @SuppressWarnings("unchecked")
35 public void pageSetsCorrectPostsInTemplateContext() throws RedirectException {
36 Post post1 = createPost(true, 3000L);
37 Post post2 = createPost(true, 1000L);
38 Post post3 = createPost(true, 2000L);
39 Set<Post> bookmarkedPosts = createBookmarkedPosts(post1, post2, post3);
40 when(core.getBookmarkedPosts()).thenReturn(bookmarkedPosts);
41 core.getPreferences().setPostsPerPage(5);
42 page.processTemplate(freenetRequest, templateContext);
43 assertThat((Collection<Post>) templateContext.get("posts"), contains(post1, post3, post2));
44 assertThat(((Pagination<Post>) templateContext.get("pagination")).getItems(), contains(post1, post3, post2));
45 assertThat(((Boolean) templateContext.get("postsNotLoaded")), is(false));
48 private Set<Post> createBookmarkedPosts(Post post1, Post post2, Post post3) {
49 Set<Post> bookmarkedPosts = new HashSet<>();
50 bookmarkedPosts.add(post1);
51 bookmarkedPosts.add(post2);
52 bookmarkedPosts.add(post3);
53 return bookmarkedPosts;
57 @SuppressWarnings("unchecked")
58 public void notLoadedPostsAreNotIncludedButAFlagIsSet() throws RedirectException {
59 Post post1 = createPost(true, 1000L);
60 Post post2 = createPost(true, 3000L);
61 Post post3 = createPost(false, 2000L);
62 Set<Post> bookmarkedPosts = createBookmarkedPosts(post1, post2, post3);
63 when(core.getBookmarkedPosts()).thenReturn(bookmarkedPosts);
64 core.getPreferences().setPostsPerPage(5);
65 page.processTemplate(freenetRequest, templateContext);
66 assertThat((Collection<Post>) templateContext.get("posts"), contains(post2, post1));
67 assertThat(((Pagination<Post>) templateContext.get("pagination")).getItems(), contains(post2, post1));
68 assertThat(((Boolean) templateContext.get("postsNotLoaded")), is(true));
71 private Post createPost(boolean postLoaded, long time) {
72 Post post = mock(Post.class);
73 when(post.isLoaded()).thenReturn(postLoaded);
74 when(post.getTime()).thenReturn(time);