Move web pages to their own package
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / MarkAsKnownPageTest.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.data.Sone
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.web.pages.MarkAsKnownPage
8 import net.pterodactylus.sone.web.pages.WebPageTest
9 import org.junit.Test
10 import org.mockito.Mockito.verify
11
12 /**
13  * Unit test for [MarkAsKnownPage].
14  */
15 class MarkAsKnownPageTest : WebPageTest() {
16
17         private val page = MarkAsKnownPage(template, webInterface)
18
19         override fun getPage() = page
20
21         @Test
22         fun `posts can be marked as known`() {
23                 addHttpRequestParameter("returnPage", "return.html")
24                 addHttpRequestParameter("type", "post")
25                 addHttpRequestParameter("id", "post1 post2 post3")
26                 val posts = listOf(mock<Post>(), mock<Post>())
27                 addPost("post1", posts[0])
28                 addPost("post3", posts[1])
29                 verifyRedirect("return.html") {
30                         verify(core).markPostKnown(posts[0])
31                         verify(core).markPostKnown(posts[1])
32                 }
33         }
34
35         @Test
36         fun `replies can be marked as known`() {
37                 addHttpRequestParameter("returnPage", "return.html")
38                 addHttpRequestParameter("type", "reply")
39                 addHttpRequestParameter("id", "reply1 reply2 reply3")
40                 val replies = listOf(mock<PostReply>(), mock<PostReply>())
41                 addPostReply("reply1", replies[0])
42                 addPostReply("reply3", replies[1])
43                 verifyRedirect("return.html") {
44                         verify(core).markReplyKnown(replies[0])
45                         verify(core).markReplyKnown(replies[1])
46                 }
47         }
48
49         @Test
50         fun `sones can be marked as known`() {
51                 addHttpRequestParameter("returnPage", "return.html")
52                 addHttpRequestParameter("type", "sone")
53                 addHttpRequestParameter("id", "sone1 sone2 sone3")
54                 val sones = listOf(mock<Sone>(), mock<Sone>())
55                 addSone("sone1", sones[0])
56                 addSone("sone3", sones[1])
57                 verifyRedirect("return.html") {
58                         verify(core).markSoneKnown(sones[0])
59                         verify(core).markSoneKnown(sones[1])
60                 }
61         }
62
63         @Test
64         fun `different type redirects to invalid page`() {
65                 addHttpRequestParameter("type", "foo")
66                 verifyRedirect("invalid.html")
67         }
68
69 }