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.util.web.Method.POST
7 import org.hamcrest.MatcherAssert.assertThat
8 import org.hamcrest.Matchers.equalTo
10 import org.mockito.Mockito.any
11 import org.mockito.Mockito.never
12 import org.mockito.Mockito.verify
15 * Unit test for [UnbookmarkPage].
17 class UnbookmarkPageTest: WebPageTest() {
19 private val page = UnbookmarkPage(template, webInterface)
21 override fun getPage() = page
24 fun `page returns correct path`() {
25 assertThat(page.path, equalTo("unbookmark.html"))
29 fun `page does not require login`() {
30 assertThat(page.requiresLogin(), equalTo(false))
34 fun `page returns correct title`() {
35 addTranslation("Page.Unbookmark.Title", "unbookmark page title")
36 assertThat(page.getPageTitle(freenetRequest), equalTo("unbookmark page title"))
40 fun `get request does not redirect`() {
45 fun `get request with all-not-loaded parameter unloads all not loaded posts and redirects to bookmarks`() {
46 addHttpRequestParameter("post", "allNotLoaded")
47 val loadedPost1 = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
48 val loadedPost2 = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
49 val notLoadedPost1 = mock<Post>()
50 val notLoadedPost2 = mock<Post>()
51 whenever(core.bookmarkedPosts).thenReturn(setOf(loadedPost1, loadedPost2, notLoadedPost1, notLoadedPost2))
52 verifyRedirect("bookmarks.html") {
53 verify(core).unbookmarkPost(notLoadedPost1)
54 verify(core).unbookmarkPost(notLoadedPost2)
55 verify(core, never()).unbookmarkPost(loadedPost1)
56 verify(core, never()).unbookmarkPost(loadedPost2)
61 fun `post request does not unbookmark not-present post but redirects to return page`() {
63 addHttpRequestPart("post", "post-id")
64 addHttpRequestPart("returnPage", "return.html")
65 verifyRedirect("return.html") {
66 verify(core, never()).unbookmarkPost(any())
71 fun `post request unbookmarks present post and redirects to return page`() {
73 addHttpRequestPart("post", "post-id")
74 addHttpRequestPart("returnPage", "return.html")
75 val post = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
76 addPost("post-id", post)
77 verifyRedirect("return.html") {
78 verify(core).unbookmarkPost(post)