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