X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FIndexPageTest.kt;h=e52accb4b8e2ba31030855e3914742491dfb9c22;hp=990aacf9eb9e14c3d0080f10fb7fe4a55ee56ba3;hb=6a3f1fede0cda5cd6ed56204aa1dd37a19813cb9;hpb=107af8767f5dce8c27fa4c91b3ff3bc951140cca diff --git a/src/test/kotlin/net/pterodactylus/sone/web/pages/IndexPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/pages/IndexPageTest.kt index 990aacf..e52accb 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/pages/IndexPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/pages/IndexPageTest.kt @@ -5,13 +5,17 @@ import com.google.common.base.Predicate import net.pterodactylus.sone.data.Post import net.pterodactylus.sone.data.Sone import net.pterodactylus.sone.notify.PostVisibilityFilter +import net.pterodactylus.sone.test.getInstance import net.pterodactylus.sone.test.mock import net.pterodactylus.sone.test.whenever import net.pterodactylus.sone.utils.Pagination -import net.pterodactylus.util.web.Method.GET +import net.pterodactylus.sone.web.baseInjector +import net.pterodactylus.sone.web.page.* import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.contains +import org.hamcrest.Matchers.emptyIterable import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.notNullValue import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers @@ -19,10 +23,11 @@ import org.mockito.ArgumentMatchers /** * Unit test for [IndexPage]. */ -class IndexPageTest : WebPageTest() { +class IndexPageTest: WebPageTest({ template, webInterface, loaders -> IndexPage(template, webInterface, loaders, postVisibilityFilter) }) { - private val postVisibilityFilter = mock() - private val page = IndexPage(template, webInterface, postVisibilityFilter) + companion object { + private val postVisibilityFilter = mock() + } @Test fun `page returns correct path`() { @@ -37,7 +42,7 @@ class IndexPageTest : WebPageTest() { @Test fun `page returns correct title`() { whenever(l10n.getString("Page.Index.Title")).thenReturn("index page title") - assertThat(page.getPageTitle(freenetRequest), equalTo("index page title")) + assertThat(page.getPageTitle(soneRequest), equalTo("index page title")) } @Before @@ -64,7 +69,6 @@ class IndexPageTest : WebPageTest() { fun `index page shows all posts of current sone`() { val posts = listOf(createPost(3000), createPost(2000), createPost(1000)) whenever(currentSone.posts).thenReturn(posts) - request("", GET) page.processTemplate(freenetRequest, templateContext) @Suppress("UNCHECKED_CAST") assertThat(templateContext["posts"] as Iterable, contains(*posts.toTypedArray())) @@ -78,7 +82,6 @@ class IndexPageTest : WebPageTest() { val notFollowedPosts = listOf(createPost(2500, true), createPost(1500)) whenever(notFollowedSone.posts).thenReturn(notFollowedPosts) addSone("notfollowed1", notFollowedSone) - request("", GET) whenever(core.getDirectedPosts("current")).thenReturn(listOf(notFollowedPosts[0])) page.processTemplate(freenetRequest, templateContext) @Suppress("UNCHECKED_CAST") @@ -96,7 +99,6 @@ class IndexPageTest : WebPageTest() { whenever(followedSone.posts).thenReturn(followedPosts) whenever(currentSone.friends).thenReturn(listOf("followed1", "followed2")) addSone("followed1", followedSone) - request("", GET) page.processTemplate(freenetRequest, templateContext) @Suppress("UNCHECKED_CAST") assertThat(templateContext["posts"] as Iterable, contains( @@ -114,7 +116,6 @@ class IndexPageTest : WebPageTest() { whenever(currentSone.friends).thenReturn(listOf("followed1", "followed2")) whenever(postVisibilityFilter.isVisible(ArgumentMatchers.eq(currentSone))).thenReturn(Predicate { (it?.time ?: 10000) < 2500 }) addSone("followed1", followedSone) - request("", GET) page.processTemplate(freenetRequest, templateContext) @Suppress("UNCHECKED_CAST") assertThat(templateContext["posts"] as Iterable, contains( @@ -126,7 +127,6 @@ class IndexPageTest : WebPageTest() { fun `index page sets pagination correctly`() { val posts = listOf(createPost(3000), createPost(2000), createPost(1000)) whenever(currentSone.posts).thenReturn(posts) - request("", GET) page.processTemplate(freenetRequest, templateContext) @Suppress("UNCHECKED_CAST") assertThat((templateContext["pagination"] as Pagination).items, contains( @@ -138,12 +138,31 @@ class IndexPageTest : WebPageTest() { fun `index page sets page correctly`() { val posts = listOf(createPost(3000), createPost(2000), createPost(1000)) whenever(currentSone.posts).thenReturn(posts) - request("", GET) - core.preferences.postsPerPage = 1 + core.preferences.newPostsPerPage = 1 addHttpRequestParameter("page", "2") page.processTemplate(freenetRequest, templateContext) @Suppress("UNCHECKED_CAST") assertThat((templateContext["pagination"] as Pagination).page, equalTo(2)) } + @Test + fun `index page without posts sets correct pagination`() { + core.preferences.newPostsPerPage = 1 + page.processTemplate(freenetRequest, templateContext) + @Suppress("UNCHECKED_CAST") + (templateContext["pagination"] as Pagination).let { pagination -> + assertThat(pagination.items, emptyIterable()) + } + } + + @Test + fun `page can be created by dependency injection`() { + assertThat(baseInjector.getInstance(), notNullValue()) + } + + @Test + fun `page is annotated with correct menuname`() { + assertThat(page.menuName, equalTo("Index")) + } + }