1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.test.getInstance
5 import net.pterodactylus.sone.test.mock
6 import net.pterodactylus.sone.web.baseInjector
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
12 import org.mockito.ArgumentMatchers.any
13 import org.mockito.Mockito.never
14 import org.mockito.Mockito.verify
17 * Unit test for [BookmarkPage].
19 class BookmarkPageTest : WebPageTest(::BookmarkPage) {
22 fun `path is set correctly`() {
23 assertThat(page.path, equalTo("bookmark.html"))
27 fun `get request does not bookmark anything and does not redirect`() {
29 verify(core, never()).bookmarkPost(any())
33 private fun setupBookmarkRequest() {
35 addHttpRequestPart("returnPage", "return-page.html")
36 addHttpRequestPart("post", "post-id")
40 fun `post is bookmarked correctly`() {
41 setupBookmarkRequest()
42 val post = mock<Post>()
43 addPost("post-id", post)
44 verifyRedirect("return-page.html") {
45 verify(core).bookmarkPost(post)
50 fun `non-existing post is not bookmarked`() {
51 setupBookmarkRequest()
52 verifyRedirect("return-page.html") {
53 verify(core, never()).bookmarkPost(any())
58 fun `bookmark page can be created by dependency injection`() {
59 assertThat(baseInjector.getInstance<BookmarkPage>(), notNullValue())