1 package net.pterodactylus.sone.fcp
3 import net.pterodactylus.sone.core.*
4 import net.pterodactylus.sone.data.*
5 import net.pterodactylus.sone.test.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
11 * Unit test for [CreateReplyCommand].
13 class CreateReplyCommandTest : SoneCommandTest() {
15 private val post = mock<Post>()
17 override fun createCommand(core: Core) = CreateReplyCommand(core)
20 fun `command requires write access`() {
21 assertThat(command.requiresWriteAccess, equalTo(true))
25 fun `request without any parameters results in fcp exception`() {
26 requestWithoutAnyParameterResultsInFcpException()
30 fun `request with empty Sone parameter results in fcp exception`() {
31 requestWithEmptySoneParameterResultsInFcpException()
35 fun `request with invalid Sone parameter results in fcp exception`() {
36 requestWithInvalidSoneParameterResultsInFcpException()
40 fun `request with valid remote Sone parameter results in fcp exception`() {
41 requestWithValidRemoteSoneParameterResultsInFcpException()
44 private fun addValidLocalSoneParameter() {
45 parameters += "Sone" to "LocalSoneId"
46 whenever(core.getSone("LocalSoneId")).thenReturn(localSone)
50 fun `request without post parameter results in fcp exception`() {
51 addValidLocalSoneParameter()
52 executeCommandAndExpectFcpException()
56 fun `request with invalid post parameter results in fcp exception`() {
57 addValidLocalSoneParameter()
58 parameters += "Post" to "InvalidPostId"
59 executeCommandAndExpectFcpException()
62 private fun addValidPostParameter() {
63 parameters += "Post" to "ValidPostId"
64 whenever(core.getPost("ValidPostId")).thenReturn(post)
68 fun `request without text results in fcp exception`() {
69 addValidLocalSoneParameter()
70 addValidPostParameter()
71 executeCommandAndExpectFcpException()
75 fun `complete request creates reply`() {
76 addValidLocalSoneParameter()
77 addValidPostParameter()
78 parameters += "Text" to "Test"
79 val postReply = mock<PostReply>().apply { whenever(id).thenReturn("ReplyId") }
80 whenever(core.createReply(localSone, post, "Test")).thenReturn(postReply)
81 val response = command.execute(parameters)
82 assertThat(response.replyParameters["Message"], equalTo("ReplyCreated"))
83 assertThat(response.replyParameters["Reply"], equalTo("ReplyId"))