X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FBookmarksPageTest.java;fp=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FBookmarksPageTest.java;h=2412414c6a40dbd09855ca0f1172c28174fe20c0;hb=f4cc2308ed23058a9cee4e6dcf4ffbf77659234d;hp=0000000000000000000000000000000000000000;hpb=500f6083a0e6259b4bb20d8d4216ca6145af55e0;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/web/BookmarksPageTest.java b/src/test/java/net/pterodactylus/sone/web/BookmarksPageTest.java new file mode 100644 index 0000000..2412414 --- /dev/null +++ b/src/test/java/net/pterodactylus/sone/web/BookmarksPageTest.java @@ -0,0 +1,72 @@ +package net.pterodactylus.sone.web; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.is; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.web.page.FreenetTemplatePage.RedirectException; + +import org.junit.Test; + +/** + * Unit test for {@link BookmarksPage}. + * + * @author David ‘Bombe’ Roden + */ +public class BookmarksPageTest extends WebPageTest { + + private final BookmarksPage page = new BookmarksPage(template, webInterface); + + @Test + public void pageReturnsCorrectPath() { + assertThat(page.getPath(), is("bookmarks.html")); + } + + @Test + @SuppressWarnings("unchecked") + public void pageSetsCorrectPostsInTemplateContext() throws RedirectException { + Post post1 = createPost(true); + Post post2 = createPost(true); + Post post3 = createPost(true); + Set bookmarkedPosts = createBookmarkedPosts(post1, post2, post3); + when(core.getBookmarkedPosts()).thenReturn(bookmarkedPosts); + when(core.getPreferences().getPostsPerPage()).thenReturn(5); + page.processTemplate(freenetRequest, templateContext); + assertThat((Collection) templateContext.get("posts"), containsInAnyOrder(post1, post2, post3)); + assertThat(((Boolean) templateContext.get("postsNotLoaded")), is(false)); + } + + private Set createBookmarkedPosts(Post post1, Post post2, Post post3) { + Set bookmarkedPosts = new HashSet<>(); + bookmarkedPosts.add(post1); + bookmarkedPosts.add(post2); + bookmarkedPosts.add(post3); + return bookmarkedPosts; + } + + @Test + @SuppressWarnings("unchecked") + public void notLoadedPostsAreNotIncludedButAFlagIsSet() throws RedirectException { + Post post1 = createPost(true); + Post post2 = createPost(true); + Post post3 = createPost(false); + Set bookmarkedPosts = createBookmarkedPosts(post1, post2, post3); + when(core.getBookmarkedPosts()).thenReturn(bookmarkedPosts); + when(core.getPreferences().getPostsPerPage()).thenReturn(5); + page.processTemplate(freenetRequest, templateContext); + assertThat((Collection) templateContext.get("posts"), containsInAnyOrder(post1, post2)); + assertThat(((Boolean) templateContext.get("postsNotLoaded")), is(true)); + } + + private Post createPost(boolean postLoaded) { + return when(mock(Post.class).isLoaded()).thenReturn(postLoaded).getMock(); + } + +}