Replace new page test with Kotlin version
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / NewPageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.data.PostReply
5 import net.pterodactylus.sone.test.asOptional
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.test.whenever
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.containsInAnyOrder
10 import org.junit.Before
11 import org.junit.Test
12 import java.util.Arrays.asList
13
14 /**
15  * Unit test for [NewPage].
16  */
17 class NewPageTest: WebPageTest() {
18
19         private val page = NewPage(template, webInterface)
20
21         override fun getPage() = page
22
23         @Before
24         fun setupNumberOfPostsPerPage() {
25                 webInterface.core.preferences.postsPerPage = 5
26         }
27
28         @Test
29         fun `posts are not duplicated when they come from both new posts and new replies notifications`() {
30                 val extraPost = mock<Post>()
31                 val posts = asList(mock<Post>(), mock<Post>())
32                 val postReplies = asList(mock<PostReply>(), mock<PostReply>())
33                 whenever(postReplies[0].post).thenReturn(posts[0].asOptional())
34                 whenever(postReplies[1].post).thenReturn(extraPost.asOptional())
35                 whenever(webInterface.getNewPosts(currentSone)).thenReturn(posts)
36                 whenever(webInterface.getNewReplies(currentSone)).thenReturn(postReplies)
37
38                 verifyNoRedirect {
39                         val renderedPosts = templateContext.get<List<Post>>("posts", List::class.java)
40                         assertThat(renderedPosts, containsInAnyOrder(posts[0], posts[1], extraPost))
41                 }
42         }
43
44 }