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