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