0bb49e03f7ebb6b55d7e2738a60912b153c7b72f
[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.*
4 import net.pterodactylus.sone.test.*
5 import net.pterodactylus.sone.web.*
6 import net.pterodactylus.util.web.Method.*
7 import org.hamcrest.MatcherAssert.*
8 import org.hamcrest.Matchers.*
9 import org.junit.*
10 import org.mockito.Mockito.*
11
12 /**
13  * Unit test for [MarkAsKnownPage].
14  */
15 class MarkAsKnownPageTest: WebPageTest(::MarkAsKnownPage) {
16
17         @Test
18         fun `page returns correct path`() {
19                 assertThat(page.path, equalTo("markAsKnown.html"))
20         }
21
22         @Test
23         fun `page does not require login`() {
24                 assertThat(page.requiresLogin(), equalTo(false))
25         }
26
27         @Test
28         fun `page returns correct title`() {
29                 addTranslation("Page.MarkAsKnown.Title", "mark as known page title")
30                 assertThat(page.getPageTitle(soneRequest), equalTo("mark as known page title"))
31         }
32
33         @Test
34         fun `posts can be marked as known`() {
35                 setMethod(POST)
36                 addHttpRequestPart("returnPage", "return.html")
37                 addHttpRequestPart("type", "post")
38                 addHttpRequestPart("id", "post1 post2 post3")
39                 val posts = listOf(mock<Post>(), mock())
40                 addPost("post1", posts[0])
41                 addPost("post3", posts[1])
42                 verifyRedirect("return.html") {
43                         verify(core).markPostKnown(posts[0])
44                         verify(core).markPostKnown(posts[1])
45                 }
46         }
47
48         @Test
49         fun `replies can be marked as known`() {
50                 setMethod(POST)
51                 addHttpRequestPart("returnPage", "return.html")
52                 addHttpRequestPart("type", "reply")
53                 addHttpRequestPart("id", "reply1 reply2 reply3")
54                 val replies = listOf(mock<PostReply>(), mock())
55                 addPostReply("reply1", replies[0])
56                 addPostReply("reply3", replies[1])
57                 verifyRedirect("return.html") {
58                         verify(core).markReplyKnown(replies[0])
59                         verify(core).markReplyKnown(replies[1])
60                 }
61         }
62
63         @Test
64         fun `sones can be marked as known`() {
65                 setMethod(POST)
66                 addHttpRequestPart("returnPage", "return.html")
67                 addHttpRequestPart("type", "sone")
68                 addHttpRequestPart("id", "sone1 sone2 sone3")
69                 val sones = listOf(mock<Sone>(), mock())
70                 addSone("sone1", sones[0])
71                 addSone("sone3", sones[1])
72                 verifyRedirect("return.html") {
73                         verify(core).markSoneKnown(sones[0])
74                         verify(core).markSoneKnown(sones[1])
75                 }
76         }
77
78         @Test
79         fun `different type redirects to invalid page`() {
80                 setMethod(POST)
81                 addHttpRequestPart("type", "foo")
82                 verifyRedirect("invalid.html")
83         }
84
85         @Test
86         fun `page can be created by dependency injection`() {
87             assertThat(baseInjector.getInstance<MarkAsKnownPage>(), notNullValue())
88         }
89
90 }