Set URI and request method separately in tests
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / BookmarkPageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.test.mock
5 import net.pterodactylus.sone.web.pages.WebPageTest
6 import net.pterodactylus.sone.web.pages.BookmarkPage
7 import net.pterodactylus.util.web.Method.POST
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.junit.Test
11 import org.mockito.ArgumentMatchers.any
12 import org.mockito.Mockito.never
13 import org.mockito.Mockito.verify
14
15 /**
16  * Unit test for [BookmarkPage].
17  */
18 class BookmarkPageTest : WebPageTest() {
19
20         private val page = BookmarkPage(template, webInterface)
21         override fun getPage() = page
22
23         @Test
24         fun `path is set correctly`() {
25                 assertThat(page.path, equalTo("bookmark.html"))
26         }
27
28         @Test
29         fun `get request does not bookmark anything and does not redirect`() {
30                 page.processTemplate(freenetRequest, templateContext)
31                 verify(core, never()).bookmarkPost(any())
32         }
33
34         private fun setupBookmarkRequest() {
35                 setMethod(POST)
36                 addHttpRequestPart("returnPage", "return-page.html")
37                 addHttpRequestPart("post", "post-id")
38         }
39
40         @Test
41         fun `post is bookmarked correctly`() {
42                 setupBookmarkRequest()
43                 val post = mock<Post>()
44                 addPost("post-id", post)
45                 verifyRedirect("return-page.html") {
46                         verify(core).bookmarkPost(post)
47                 }
48         }
49
50         @Test
51         fun `non-existing post is not bookmarked`() {
52                 setupBookmarkRequest()
53                 verifyRedirect("return-page.html") {
54                         verify(core, never()).bookmarkPost(any())
55                 }
56         }
57
58 }