1 package net.pterodactylus.sone.web.ajax
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.data.PostReply
5 import net.pterodactylus.sone.data.Sone
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.test.whenever
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
11 import org.mockito.Mockito.any
12 import org.mockito.Mockito.never
13 import org.mockito.Mockito.verify
16 * Unit test for [MarkAsKnownAjaxPage].
18 class MarkAsKnownAjaxPageTest : JsonPageTest("markAsKnown.ajax", requiresLogin = false, pageSupplier = ::MarkAsKnownAjaxPage) {
21 fun `request without type results in invalid-type`() {
22 assertThat(json.isSuccess, equalTo(false))
23 assertThat(json.error, equalTo("invalid-type"))
27 fun `request with unknown sone returns successfully`() {
28 addRequestParameter("type", "sone")
29 addRequestParameter("id", "invalid")
30 assertThat(json.isSuccess, equalTo(true))
31 verify(core, never()).markSoneKnown(any())
35 fun `request with multiple valid sones marks sones as known and returns successfully`() {
36 addRequestParameter("type", "sone")
37 addRequestParameter("id", "sone-id1 sone-id2")
38 val sone1 = mock<Sone>().apply { whenever(id).thenReturn("sone-id1") }
39 val sone2 = mock<Sone>().apply { whenever(id).thenReturn("sone-id2") }
42 assertThat(json.isSuccess, equalTo(true))
43 verify(core).markSoneKnown(sone1)
44 verify(core).markSoneKnown(sone2)
48 fun `request with multiple valid posts marks posts as known and returns successfully`() {
49 addRequestParameter("type", "post")
50 addRequestParameter("id", "post1 post2 post 3")
51 val post1 = mock<Post>()
52 val post2 = mock<Post>()
53 addPost(post1, "post1")
54 addPost(post2, "post2")
55 assertThat(json.isSuccess, equalTo(true))
56 verify(core).markPostKnown(post1)
57 verify(core).markPostKnown(post2)
61 fun `request with multiple valid replies marks replies as known and returns successfully`() {
62 addRequestParameter("type", "reply")
63 addRequestParameter("id", "reply1 reply2 reply3")
64 val reply1 = mock<PostReply>()
65 val reply2 = mock<PostReply>()
66 addReply(reply1, "reply1")
67 addReply(reply2, "reply2")
68 assertThat(json.isSuccess, equalTo(true))
69 verify(core).markReplyKnown(reply1)
70 verify(core).markReplyKnown(reply2)