1 package net.pterodactylus.sone.web.pages
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
9 import org.mockito.Mockito.any
10 import org.mockito.Mockito.never
11 import org.mockito.Mockito.verify
14 * Unit test for [UnbookmarkPage].
16 class UnbookmarkPageTest : WebPageTest() {
18 private val page = UnbookmarkPage(template, webInterface)
20 override fun getPage() = page
23 fun `get request does not redirect`() {
24 page.handleRequest(freenetRequest, templateContext)
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)
44 fun `post request does not unbookmark not-present post but redirects to return page`() {
46 addHttpRequestParameter("post", "post-id")
47 addHttpRequestParameter("returnPage", "return.html")
48 verifyRedirect("return.html") {
49 verify(core, never()).unbookmarkPost(any())
54 fun `post request unbookmarks present post and redirects to return page`() {
56 addHttpRequestParameter("post", "post-id")
57 addHttpRequestParameter("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)