Add default value for all HTTP parameters
[Sone.git] / src / test / java / net / pterodactylus / sone / web / BookmarksPageTest.java
1 package net.pterodactylus.sone.web;
2
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;
8
9 import java.util.Collection;
10 import java.util.HashSet;
11 import java.util.Set;
12
13 import net.pterodactylus.sone.data.Post;
14 import net.pterodactylus.sone.web.page.FreenetTemplatePage.RedirectException;
15
16 import org.junit.Test;
17
18 /**
19  * Unit test for {@link BookmarksPage}.
20  *
21  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
22  */
23 public class BookmarksPageTest extends WebPageTest {
24
25         private final BookmarksPage page = new BookmarksPage(template, webInterface);
26
27         @Test
28         public void pageReturnsCorrectPath() {
29                 assertThat(page.getPath(), is("bookmarks.html"));
30         }
31
32         @Test
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));
44         }
45
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;
52         }
53
54         @Test
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));
66         }
67
68         private Post createPost(boolean postLoaded) {
69                 return when(mock(Post.class).isLoaded()).thenReturn(postLoaded).getMock();
70         }
71
72 }