Add unit test for like page
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / LikePageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.util.web.Method.GET
4 import net.pterodactylus.util.web.Method.POST
5 import org.junit.Test
6 import org.mockito.Mockito.verify
7 import org.mockito.Mockito.verifyNoMoreInteractions
8
9 /**
10  * Unit test for [LikePage].
11  */
12 class LikePageTest : WebPageTest() {
13
14         private val page = LikePage(template, webInterface)
15
16         @Test
17         fun `get request does not redirect`() {
18                 request("", GET)
19                 page.handleRequest(freenetRequest, templateContext)
20         }
21
22         @Test
23         fun `post request with post id likes post and redirects to return page`() {
24                 request("", POST)
25                 addHttpRequestParameter("type", "post")
26                 addHttpRequestParameter("post", "post-id")
27                 addHttpRequestParameter("returnPage", "return.html")
28                 expectedException.expect(WebTestUtils.redirectsTo("return.html"))
29                 try {
30                         page.handleRequest(freenetRequest, templateContext)
31                 } finally {
32                         verify(currentSone).addLikedPostId("post-id")
33                 }
34         }
35
36         @Test
37         fun `post request with reply id likes post and redirects to return page`() {
38                 request("", POST)
39                 addHttpRequestParameter("type", "reply")
40                 addHttpRequestParameter("reply", "reply-id")
41                 addHttpRequestParameter("returnPage", "return.html")
42                 expectedException.expect(WebTestUtils.redirectsTo("return.html"))
43                 try {
44                         page.handleRequest(freenetRequest, templateContext)
45                 } finally {
46                         verify(currentSone).addLikedReplyId("reply-id")
47                 }
48         }
49
50         @Test
51         fun `post request with invalid likes redirects to return page`() {
52                 request("", POST)
53                 addHttpRequestParameter("type", "foo")
54                 addHttpRequestParameter("returnPage", "return.html")
55                 expectedException.expect(WebTestUtils.redirectsTo("return.html"))
56                 try {
57                         page.handleRequest(freenetRequest, templateContext)
58                 } finally {
59                         verifyNoMoreInteractions(currentSone)
60                 }
61         }
62
63 }