X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FBookmarksPageTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FBookmarksPageTest.kt;h=6b4bbaef699df1ba229661e06be66f341addd79f;hb=de7568a82eb4150bf6d2b0553841b7b69f84c968;hp=0000000000000000000000000000000000000000;hpb=9acbc5bdec4ccb752e0856a501568b0bb6161579;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/web/pages/BookmarksPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/pages/BookmarksPageTest.kt new file mode 100644 index 0000000..6b4bbae --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/web/pages/BookmarksPageTest.kt @@ -0,0 +1,60 @@ +package net.pterodactylus.sone.web.pages + +import net.pterodactylus.sone.data.Post +import net.pterodactylus.sone.test.mock +import net.pterodactylus.sone.test.whenever +import net.pterodactylus.sone.web.pages.WebPageTest +import net.pterodactylus.sone.web.pages.BookmarksPage +import net.pterodactylus.util.collection.Pagination +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.contains +import org.hamcrest.Matchers.equalTo +import org.junit.Before +import org.junit.Test + +/** + * Unit test for [BookmarksPage]. + */ +class BookmarksPageTest: WebPageTest() { + + private val page = BookmarksPage(template, webInterface) + private val post1 = createLoadedPost(1000) + private val post2 = createLoadedPost(3000) + private val post3 = createLoadedPost(2000) + + private fun createLoadedPost(time: Long) = mock().apply { + whenever(isLoaded).thenReturn(true) + whenever(this.time).thenReturn(time) + } + + @Before + fun setupBookmarkedPostsAndPagination() { + whenever(core.bookmarkedPosts).thenReturn(setOf(post1, post2, post3)) + core.preferences.postsPerPage = 5 + } + + @Test + fun `page returns correct path`() { + assertThat(page.path, equalTo("bookmarks.html")) + } + + @Test + @Suppress("UNCHECKED_CAST") + fun `page sets correct posts in template context`() { + page.processTemplate(freenetRequest, templateContext) + assertThat(templateContext["posts"] as Collection, contains(post2, post3, post1)) + assertThat((templateContext["pagination"] as Pagination).items, contains(post2, post3, post1)) + assertThat(templateContext["postsNotLoaded"], equalTo(false)) + } + + @Test + @Suppress("UNCHECKED_CAST") + fun `page does not put unloaded posts in template context but sets a flag`() { + whenever(post3.isLoaded).thenReturn(false) + page.processTemplate(freenetRequest, templateContext) + assertThat(templateContext["posts"] as Collection, contains(post2, post1)) + assertThat((templateContext["pagination"] as Pagination).items, contains(post2, post1)) + assertThat(templateContext["postsNotLoaded"], equalTo(true)) + } + +}