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