X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ffcp%2FGetPostCommandTest.kt;h=f8113af100774b9c52ecfed88504a91788128df7;hb=03cec6a6772c2d836d94864adddaf544cbe9d72f;hp=dff812b4697d47e5f4a30fc22518845dd6efc671;hpb=eb1602e49345ba9fb42e4c1758651543cb1c45b9;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/fcp/GetPostCommandTest.kt b/src/test/kotlin/net/pterodactylus/sone/fcp/GetPostCommandTest.kt index dff812b..f8113af 100644 --- a/src/test/kotlin/net/pterodactylus/sone/fcp/GetPostCommandTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/fcp/GetPostCommandTest.kt @@ -2,12 +2,10 @@ package net.pterodactylus.sone.fcp import freenet.support.SimpleFieldSet import net.pterodactylus.sone.core.Core -import net.pterodactylus.sone.data.Post -import net.pterodactylus.sone.data.PostReply import net.pterodactylus.sone.data.Sone -import net.pterodactylus.sone.test.asOptional import net.pterodactylus.sone.test.mock import net.pterodactylus.sone.test.whenever +import net.pterodactylus.sone.utils.asOptional import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.containsInAnyOrder import org.hamcrest.Matchers.equalTo @@ -23,26 +21,25 @@ class GetPostCommandTest : SoneCommandTest() { private val sone = mock().apply { whenever(id).thenReturn("SoneId") } - private val post = createPost() + private val post = createPost("ValidPostId", sone, null, 1000, "Post Text\r\nSecond \\Line") + private val sone1 = mock().apply { whenever(id).thenReturn("Sone1") } + private val sone2 = mock().apply { whenever(id).thenReturn("Sone2") } + private val postReply1 = createReply("ReplyId1", sone1, post, 1000, "Reply 1") + private val postReply2 = createReply("ReplyId2", sone2, post, 2000, "Reply 2") override fun createCommand(core: Core) = GetPostCommand(core) @Before fun setupPostWithLikesAndReplies() { - whenever(core.getPost("ValidPostId")).thenReturn(post.asOptional()) - val sone1 = mock().apply { whenever(id).thenReturn("Sone1") } - val sone2 = mock().apply { whenever(id).thenReturn("Sone2") } + whenever(core.getPost("ValidPostId")).thenReturn(post) whenever(core.getLikes(post)).thenReturn(setOf(sone1, sone2)) - val replies = listOf( - createPostReply("ReplyId1", sone1, 1000, "Reply 1"), - createPostReply("ReplyId2", sone2, 2000, "Reply 2") - ) + val replies = listOf(postReply1, postReply2) whenever(core.getReplies("ValidPostId")).thenReturn(replies) } @Test fun `command does not require write access`() { - assertThat(command.requiresWriteAccess(), equalTo(false)) + assertThat(command.requiresWriteAccess, equalTo(false)) } @Test @@ -52,50 +49,26 @@ class GetPostCommandTest : SoneCommandTest() { @Test fun `request with invalid post parameter results in fcp exception`() { - parameters.putSingle("Post", "InvalidPostId") + parameters += "Post" to "InvalidPostId" executeCommandAndExpectFcpException() } - private fun createPostReply(id: String, sone: Sone, time: Long, text: String) = mock().apply { - whenever(this.id).thenReturn(id) - whenever(this.sone).thenReturn(sone) - whenever(this.time).thenReturn(time) - whenever(this.text).thenReturn(text) - } - - private fun createPost() = mock().apply { - whenever(id).thenReturn("ValidPostId") - whenever(this.sone).thenReturn(this@GetPostCommandTest.sone) - whenever(recipientId).thenReturn(null.asOptional()) - whenever(time).thenReturn(1000) - whenever(text).thenReturn("Post Text\r\nSecond \\Line") - } - private fun verifyPostWithLikes(replyParameters: SimpleFieldSet) { assertThat(replyParameters["Message"], equalTo("Post")) - assertThat(replyParameters["Post.ID"], equalTo("ValidPostId")) - assertThat(replyParameters["Post.Sone"], equalTo("SoneId")) - assertThat(replyParameters["Post.Time"], equalTo("1000")) - assertThat(replyParameters["Post.Text"], equalTo("Post Text\\r\\nSecond \\\\Line")) + assertThat(replyParameters.parsePost("Post."), matchesPost(post)) assertThat(replyParameters["Post.Likes.Count"], equalTo("2")) assertThat((0..1).map { replyParameters["Post.Likes.$it.ID"] }, containsInAnyOrder("Sone1", "Sone2")) } private fun verifyReplies(replyParameters: SimpleFieldSet) { assertThat(replyParameters["Post.Replies.Count"], equalTo("2")) - assertThat(replyParameters["Post.Replies.0.ID"], equalTo("ReplyId1")) - assertThat(replyParameters["Post.Replies.0.Sone"], equalTo("Sone1")) - assertThat(replyParameters["Post.Replies.0.Time"], equalTo("1000")) - assertThat(replyParameters["Post.Replies.0.Text"], equalTo("Reply 1")) - assertThat(replyParameters["Post.Replies.1.ID"], equalTo("ReplyId2")) - assertThat(replyParameters["Post.Replies.1.Sone"], equalTo("Sone2")) - assertThat(replyParameters["Post.Replies.1.Time"], equalTo("2000")) - assertThat(replyParameters["Post.Replies.1.Text"], equalTo("Reply 2")) + assertThat(replyParameters.parsePost("Post.Replies.0."), matchesReply(postReply1)) + assertThat(replyParameters.parsePost("Post.Replies.1."), matchesReply(postReply2)) } @Test fun `request with valid post parameter returns post response`() { - parameters.putSingle("Post", "ValidPostId") + parameters += "Post" to "ValidPostId" val replyParameters = command.execute(parameters).replyParameters verifyPostWithLikes(replyParameters) assertThat(replyParameters["Post.Recipient"], nullValue()) @@ -104,8 +77,8 @@ class GetPostCommandTest : SoneCommandTest() { @Test fun `request with valid post parameter without replies returns post response without replies`() { - parameters.putSingle("Post", "ValidPostId") - parameters.putSingle("IncludeReplies", "false") + parameters += "Post" to "ValidPostId" + parameters += "IncludeReplies" to "false" val replyParameters = command.execute(parameters).replyParameters verifyPostWithLikes(replyParameters) assertThat(replyParameters["Post.Recipient"], nullValue()) @@ -114,7 +87,7 @@ class GetPostCommandTest : SoneCommandTest() { @Test fun `request with valid post parameter returns post response with recipient`() { - parameters.putSingle("Post", "ValidPostId") + parameters += "Post" to "ValidPostId" whenever(post.recipientId).thenReturn("Sone2".asOptional()) val replyParameters = command.execute(parameters).replyParameters verifyPostWithLikes(replyParameters) @@ -124,8 +97,8 @@ class GetPostCommandTest : SoneCommandTest() { @Test fun `request with valid post parameter without replies returns post response without replies but with recipient`() { - parameters.putSingle("Post", "ValidPostId") - parameters.putSingle("IncludeReplies", "false") + parameters += "Post" to "ValidPostId" + parameters += "IncludeReplies" to "false" whenever(post.recipientId).thenReturn("Sone2".asOptional()) val replyParameters = command.execute(parameters).replyParameters verifyPostWithLikes(replyParameters)