4be4a79ba5781d1cbf47d55b1ed5830a66bb8087
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / UnbookmarkPageTest.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.test.whenever
6 import net.pterodactylus.sone.web.pages.UnbookmarkPage
7 import net.pterodactylus.util.web.Method.POST
8 import org.junit.Test
9 import org.mockito.Mockito.any
10 import org.mockito.Mockito.never
11 import org.mockito.Mockito.verify
12
13 /**
14  * Unit test for [UnbookmarkPage].
15  */
16 class UnbookmarkPageTest : WebPageTest() {
17
18         private val page = UnbookmarkPage(template, webInterface)
19
20         override fun getPage() = page
21
22         @Test
23         fun `get request does not redirect`() {
24                 page.handleRequest(freenetRequest, templateContext)
25         }
26
27         @Test
28         fun `get request with all-not-loaded parameter unloads all not loaded posts and redirects to bookmarks`() {
29                 addHttpRequestParameter("post", "allNotLoaded")
30                 val loadedPost1 = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
31                 val loadedPost2 = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
32                 val notLoadedPost1 = mock<Post>()
33                 val notLoadedPost2 = mock<Post>()
34                 whenever(core.bookmarkedPosts).thenReturn(setOf(loadedPost1, loadedPost2, notLoadedPost1, notLoadedPost2))
35                 verifyRedirect("bookmarks.html") {
36                         verify(core).unbookmarkPost(notLoadedPost1)
37                         verify(core).unbookmarkPost(notLoadedPost2)
38                         verify(core, never()).unbookmarkPost(loadedPost1)
39                         verify(core, never()).unbookmarkPost(loadedPost2)
40                 }
41         }
42
43         @Test
44         fun `post request does not unbookmark not-present post but redirects to return page`() {
45                 setMethod(POST)
46                 addHttpRequestPart("post", "post-id")
47                 addHttpRequestPart("returnPage", "return.html")
48                 verifyRedirect("return.html") {
49                         verify(core, never()).unbookmarkPost(any())
50                 }
51         }
52
53         @Test
54         fun `post request unbookmarks present post and redirects to return page`() {
55                 setMethod(POST)
56                 addHttpRequestPart("post", "post-id")
57                 addHttpRequestPart("returnPage", "return.html")
58                 val post = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
59                 addPost("post-id", post)
60                 verifyRedirect("return.html") {
61                         verify(core).unbookmarkPost(post)
62                 }
63         }
64
65 }