588717e25bded735084f0653bb46a6129f4de8e7
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / LikePageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.util.web.Method.GET
4 import net.pterodactylus.util.web.Method.POST
5 import org.hamcrest.MatcherAssert.assertThat
6 import org.hamcrest.Matchers.equalTo
7 import org.junit.Test
8 import org.mockito.Mockito.verify
9 import org.mockito.Mockito.verifyNoMoreInteractions
10
11 /**
12  * Unit test for [LikePage].
13  */
14 class LikePageTest : WebPageTest() {
15
16         private val page = LikePage(template, webInterface)
17
18         override fun getPage() = page
19
20         @Test
21         fun `page returns correct path`() {
22             assertThat(page.path, equalTo("like.html"))
23         }
24
25         @Test
26         fun `page requires login`() {
27             assertThat(page.requiresLogin(), equalTo(true))
28         }
29
30         @Test
31         fun `page returns correct title`() {
32             addTranslation("Page.Like.Title", "like page title")
33                 assertThat(page.getPageTitle(freenetRequest), equalTo("like page title"))
34         }
35
36         @Test
37         fun `get request does not redirect`() {
38                 request("", GET)
39                 verifyNoRedirect {}
40         }
41
42         @Test
43         fun `post request with post id likes post and redirects to return page`() {
44                 request("", POST)
45                 addHttpRequestPart("type", "post")
46                 addHttpRequestPart("post", "post-id")
47                 addHttpRequestPart("returnPage", "return.html")
48                 verifyRedirect("return.html") {
49                         verify(currentSone).addLikedPostId("post-id")
50                 }
51         }
52
53         @Test
54         fun `post request with reply id likes post and redirects to return page`() {
55                 request("", POST)
56                 addHttpRequestPart("type", "reply")
57                 addHttpRequestPart("reply", "reply-id")
58                 addHttpRequestPart("returnPage", "return.html")
59                 verifyRedirect("return.html") {
60                         verify(currentSone).addLikedReplyId("reply-id")
61                 }
62         }
63
64         @Test
65         fun `post request with invalid likes redirects to return page`() {
66                 request("", POST)
67                 addHttpRequestPart("type", "foo")
68                 addHttpRequestPart("returnPage", "return.html")
69                 verifyRedirect("return.html") {
70                         verifyNoMoreInteractions(currentSone)
71                 }
72         }
73
74 }