🎨 Fix formatting
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / UnlikePageTest.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.ArgumentMatchers.any
10 import org.mockito.Mockito.never
11 import org.mockito.Mockito.verify
12
13 /**
14  * Unit test for [UnlikePage].
15  */
16 class UnlikePageTest : WebPageTest(::UnlikePage) {
17
18         @Test
19         fun `page returns correct path`() {
20                 assertThat(page.path, equalTo("unlike.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.Unlike.Title", "unlike page title")
31                 assertThat(page.getPageTitle(soneRequest), equalTo("unlike page title"))
32         }
33
34         @Test
35         fun `get request does not redirect`() {
36                 verifyNoRedirect { }
37         }
38
39         @Test
40         fun `post request does not remove any likes but redirects`() {
41                 setMethod(POST)
42                 addHttpRequestPart("returnPage", "return.html")
43                 verifyRedirect("return.html") {
44                         verify(currentSone, never()).removeLikedPostId(any())
45                         verify(currentSone, never()).removeLikedReplyId(any())
46                 }
47         }
48
49         @Test
50         fun `post request removes post like and redirects`() {
51                 setMethod(POST)
52                 addHttpRequestPart("returnPage", "return.html")
53                 addHttpRequestPart("type", "post")
54                 addHttpRequestPart("post", "post-id")
55                 verifyRedirect("return.html") {
56                         verify(currentSone).removeLikedPostId("post-id")
57                         verify(currentSone, never()).removeLikedReplyId(any())
58                 }
59         }
60
61         @Test
62         fun `post request removes reply like and redirects`() {
63                 setMethod(POST)
64                 addHttpRequestPart("returnPage", "return.html")
65                 addHttpRequestPart("type", "reply")
66                 addHttpRequestPart("reply", "reply-id")
67                 verifyRedirect("return.html") {
68                         verify(currentSone, never()).removeLikedPostId(any())
69                         verify(currentSone).removeLikedReplyId("reply-id")
70                 }
71         }
72
73         @Test
74         fun `page can be created by dependency injection`() {
75                 assertThat(baseInjector.getInstance<UnlikePage>(), notNullValue())
76         }
77
78 }