1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.data.*
4 import net.pterodactylus.sone.test.*
5 import net.pterodactylus.sone.web.*
6 import net.pterodactylus.util.web.Method.*
7 import org.hamcrest.MatcherAssert.*
8 import org.hamcrest.Matchers.*
10 import org.mockito.Mockito.*
13 * Unit test for [UnbookmarkPage].
15 class UnbookmarkPageTest : WebPageTest(::UnbookmarkPage) {
18 fun `page returns correct path`() {
19 assertThat(page.path, equalTo("unbookmark.html"))
23 fun `page does not require login`() {
24 assertThat(page.requiresLogin(), equalTo(false))
28 fun `page returns correct title`() {
29 addTranslation("Page.Unbookmark.Title", "unbookmark page title")
30 assertThat(page.getPageTitle(soneRequest), equalTo("unbookmark page title"))
34 fun `get request does not redirect`() {
39 fun `get request with all-not-loaded parameter unloads all not loaded posts and redirects to bookmarks`() {
40 addHttpRequestParameter("post", "allNotLoaded")
41 val loadedPost1 = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
42 val loadedPost2 = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
43 val notLoadedPost1 = mock<Post>()
44 val notLoadedPost2 = mock<Post>()
45 whenever(core.bookmarkedPosts).thenReturn(setOf(loadedPost1, loadedPost2, notLoadedPost1, notLoadedPost2))
46 verifyRedirect("bookmarks.html") {
47 val postCaptor = capture<Post>()
48 verify(core, times(2)).unbookmarkPost(postCaptor.capture())
49 assertThat(postCaptor.allValues, contains(notLoadedPost1, notLoadedPost2))
54 fun `post request does not unbookmark not-present post but redirects to return page`() {
56 addHttpRequestPart("post", "post-id")
57 addHttpRequestPart("returnPage", "return.html")
58 verifyRedirect("return.html") {
59 verify(core, never()).unbookmarkPost(any())
64 fun `post request unbookmarks present post and redirects to return page`() {
66 addHttpRequestPart("post", "post-id")
67 addHttpRequestPart("returnPage", "return.html")
68 val post = mock<Post>().apply { whenever(isLoaded).thenReturn(true) }
69 addPost("post-id", post)
70 verifyRedirect("return.html") {
71 verify(core).unbookmarkPost(post)
76 fun `page can be created by dependency injection`() {
77 assertThat(baseInjector.getInstance<UnbookmarkPage>(), notNullValue())