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