1 package net.pterodactylus.sone.web
3 import com.google.inject.Guice
4 import net.pterodactylus.sone.data.Post
5 import net.pterodactylus.sone.test.getInstance
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.util.web.Method.POST
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.hamcrest.Matchers.notNullValue
11 import org.hamcrest.Matchers.sameInstance
13 import org.mockito.ArgumentMatchers.any
14 import org.mockito.Mockito.never
15 import org.mockito.Mockito.verify
18 * Unit test for [BookmarkPage].
20 class BookmarkPageTest : WebPageTest() {
22 private val page = BookmarkPage(template, webInterface)
23 override fun getPage() = page
26 fun `path is set correctly`() {
27 assertThat(page.path, equalTo("bookmark.html"))
31 fun `get request does not bookmark anything and does not redirect`() {
32 page.processTemplate(freenetRequest, templateContext)
33 verify(core, never()).bookmarkPost(any())
36 private fun setupBookmarkRequest() {
38 addHttpRequestParameter("returnPage", "return-page.html")
39 addHttpRequestParameter("post", "post-id")
43 fun `post is bookmarked correctly`() {
44 setupBookmarkRequest()
45 val post = mock<Post>()
46 addPost("post-id", post)
47 verifyRedirect("return-page.html") {
48 verify(core).bookmarkPost(post)
53 fun `non-existing post is not bookmarked`() {
54 setupBookmarkRequest()
55 verifyRedirect("return-page.html") {
56 verify(core, never()).bookmarkPost(any())
61 fun `bookmark page can be created by guice`() {
62 assertThat(injector.getInstance<BookmarkPage>(), notNullValue())
66 fun `bookmark page is created as singleton`() {
67 val firstInstance = injector.getInstance<BookmarkPage>()
68 val secondInstance = injector.getInstance<BookmarkPage>()
69 assertThat(firstInstance, sameInstance(secondInstance))