Replace bookmark ajax page test with Kotlin version
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / BookmarkAjaxPageTest.kt
diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/BookmarkAjaxPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/BookmarkAjaxPageTest.kt
new file mode 100644 (file)
index 0000000..1d26c71
--- /dev/null
@@ -0,0 +1,54 @@
+package net.pterodactylus.sone.web.ajax
+
+import net.pterodactylus.sone.data.Post
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.equalTo
+import org.junit.Test
+import org.mockito.ArgumentMatchers.any
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+
+/**
+ * Unit test for [BookmarkAjaxPage].
+ */
+class BookmarkAjaxPageTest : JsonPageTest(::BookmarkAjaxPage) {
+
+       @Test
+       fun `page returns correct path`() {
+               assertThat(page.path, equalTo("bookmark.ajax"))
+       }
+
+       @Test
+       fun `page does not require login`() {
+           assertThat(page.requiresLogin(), equalTo(false))
+       }
+
+       @Test
+       fun `missing post ID results in invalid id response`() {
+               assertThat(json.isSuccess, equalTo(false))
+               assertThat((json as JsonErrorReturnObject).error, equalTo("invalid-post-id"))
+       }
+
+       @Test
+       fun `empty post ID results in invalid id response`() {
+               addRequestParameter("post", "")
+               assertThat(json.isSuccess, equalTo(false))
+               assertThat((json as JsonErrorReturnObject).error, equalTo("invalid-post-id"))
+       }
+
+       @Test
+       fun `invalid post ID results in success but does not bookmark anything`() {
+               addRequestParameter("post", "missing")
+               assertThat(json.isSuccess, equalTo(true))
+               verify(core, never()).bookmarkPost(any<Post>())
+       }
+
+       @Test
+       fun `valid post ID results in success and bookmarks the post`() {
+               addRequestParameter("post", "valid-post-id")
+               val post = addNewPost("valid-post-id", "1", 2)
+               assertThat(json.isSuccess, equalTo(true))
+               verify(core).bookmarkPost(post)
+       }
+
+}