Optimize some imports
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / fcp / DeleteReplyCommandTest.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 import org.mockito.Mockito.*
10
11 /**
12  * Unit test for [DeleteReplyCommand].
13  */
14 class DeleteReplyCommandTest : SoneCommandTest() {
15
16         private val remotePostReply = mock<PostReply>().apply { whenever(sone).thenReturn(remoteSone) }
17         private val localPostReply = mock<PostReply>().apply { whenever(sone).thenReturn(localSone) }
18
19         override fun createCommand(core: Core) = DeleteReplyCommand(core)
20
21         @Test
22         fun `command requires write access`() {
23                 assertThat(command.requiresWriteAccess, equalTo(true))
24         }
25
26         @Test
27         fun `request without any parameters results in fcp exception`() {
28                 requestWithoutAnyParameterResultsInFcpException()
29         }
30
31         @Test
32         fun `request with invalid post reply parameter results in fcp exception`() {
33                 parameters += "Reply" to "InvalidReplyId"
34                 executeCommandAndExpectFcpException()
35         }
36
37         @Test
38         fun `request with remote post reply parameter results in error response`() {
39             parameters += "Reply" to "RemoteReplyId"
40                 whenever(core.getPostReply("RemoteReplyId")).thenReturn(remotePostReply)
41                 val response = command.execute(parameters)
42                 assertThat(response.replyParameters["Message"], equalTo("Error"))
43                 assertThat(response.replyParameters["ErrorCode"], equalTo("401"))
44         }
45
46         @Test
47         fun `request with local post reply parameter deletes reply`() {
48             parameters += "Reply" to "RemoteReplyId"
49                 whenever(core.getPostReply("RemoteReplyId")).thenReturn(localPostReply)
50                 val response = command.execute(parameters)
51                 assertThat(response.replyParameters["Message"], equalTo("ReplyDeleted"))
52                 verify(core).deleteReply(localPostReply)
53         }
54
55 }