Optimize some imports
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / fcp / CreateReplyCommandTest.kt
1 package net.pterodactylus.sone.fcp
2
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.*
8 import org.junit.*
9
10 /**
11  * Unit test for [CreateReplyCommand].
12  */
13 class CreateReplyCommandTest : SoneCommandTest() {
14
15         private val post = mock<Post>()
16
17         override fun createCommand(core: Core) = CreateReplyCommand(core)
18
19         @Test
20         fun `command requires write access`() {
21                 assertThat(command.requiresWriteAccess, equalTo(true))
22         }
23
24         @Test
25         fun `request without any parameters results in fcp exception`() {
26                 requestWithoutAnyParameterResultsInFcpException()
27         }
28
29         @Test
30         fun `request with empty Sone parameter results in fcp exception`() {
31                 requestWithEmptySoneParameterResultsInFcpException()
32         }
33
34         @Test
35         fun `request with invalid Sone parameter results in fcp exception`() {
36                 requestWithInvalidSoneParameterResultsInFcpException()
37         }
38
39         @Test
40         fun `request with valid remote Sone parameter results in fcp exception`() {
41                 requestWithValidRemoteSoneParameterResultsInFcpException()
42         }
43
44         private fun addValidLocalSoneParameter() {
45                 parameters += "Sone" to "LocalSoneId"
46                 whenever(core.getSone("LocalSoneId")).thenReturn(localSone)
47         }
48
49         @Test
50         fun `request without post parameter results in fcp exception`() {
51                 addValidLocalSoneParameter()
52                 executeCommandAndExpectFcpException()
53         }
54
55         @Test
56         fun `request with invalid post parameter results in fcp exception`() {
57                 addValidLocalSoneParameter()
58                 parameters += "Post" to "InvalidPostId"
59                 executeCommandAndExpectFcpException()
60         }
61
62         private fun addValidPostParameter() {
63                 parameters += "Post" to "ValidPostId"
64                 whenever(core.getPost("ValidPostId")).thenReturn(post)
65         }
66
67         @Test
68         fun `request without text results in fcp exception`() {
69                 addValidLocalSoneParameter()
70                 addValidPostParameter()
71                 executeCommandAndExpectFcpException()
72         }
73
74         @Test
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"))
84         }
85
86 }