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.Profile
6 import net.pterodactylus.sone.data.Sone
7 import net.pterodactylus.sone.test.mock
8 import net.pterodactylus.sone.test.whenever
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.contains
11 import org.hamcrest.Matchers.equalTo
15 * Unit test for [GetLikesAjaxPage].
17 class GetLikesAjaxPageTest : JsonPageTest("getLikes.ajax", needsFormPassword = false, pageSupplier = ::GetLikesAjaxPage) {
20 fun `request without parameters results in failing request`() {
21 assertThat(json.isSuccess, equalTo(false))
25 fun `request with invalid post id results in invalid-post-id`() {
26 addRequestParameter("type", "post")
27 addRequestParameter("post", "invalid")
28 assertThat(json.isSuccess, equalTo(false))
29 assertThat(json.error, equalTo("invalid-post-id"))
33 fun `request with missing post id results in invalid-post-id`() {
34 addRequestParameter("type", "post")
35 assertThat(json.isSuccess, equalTo(false))
36 assertThat(json.error, equalTo("invalid-post-id"))
40 fun `request with valid post id results in likes for post`() {
41 val post = mock<Post>().apply { whenever(id).thenReturn("post-id") }
43 addLikes(post, createSone(2), createSone(1), createSone(3))
44 addRequestParameter("type", "post")
45 addRequestParameter("post", "post-id")
46 assertThat(json.isSuccess, equalTo(true))
47 assertThat(json["likes"].asInt(), equalTo(3))
48 assertThat(json["sones"].toList().map { it["id"].asText() to it["name"].asText() }, contains(
56 fun `request with invalid reply id results in invalid-reply-id`() {
57 addRequestParameter("type", "reply")
58 addRequestParameter("reply", "invalid")
59 assertThat(json.isSuccess, equalTo(false))
60 assertThat(json.error, equalTo("invalid-reply-id"))
64 fun `request with missing reply id results in invalid-reply-id`() {
65 addRequestParameter("type", "reply")
66 assertThat(json.isSuccess, equalTo(false))
67 assertThat(json.error, equalTo("invalid-reply-id"))
71 fun `request with valid reply id results in likes for reply`() {
72 val reply = mock<PostReply>().apply { whenever(id).thenReturn("reply-id") }
74 addLikes(reply, createSone(2), createSone(1), createSone(3))
75 addRequestParameter("type", "reply")
76 addRequestParameter("reply", "reply-id")
77 assertThat(json.isSuccess, equalTo(true))
78 assertThat(json["likes"].asInt(), equalTo(3))
79 assertThat(json["sones"].toList().map { it["id"].asText() to it["name"].asText() }, contains(
87 fun `request with invalid type results in invalid-type`() {
88 addRequestParameter("type", "invalid")
89 addRequestParameter("invalid", "foo")
90 assertThat(json.isSuccess, equalTo(false))
91 assertThat(json.error, equalTo("invalid-type"))
96 private fun createSone(index: Int) = mock<Sone>().apply {
97 whenever(id).thenReturn("S$index")
98 whenever(profile).thenReturn(Profile(this).apply {
100 middleName = "M$index"