Optimize some imports
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / fcp / DeletePostCommandTest.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 [DeletePostCommand].
13  */
14 class DeletePostCommandTest : SoneCommandTest() {
15
16         private val postFromRemoteSone = mock<Post>().apply { whenever(sone).thenReturn(remoteSone) }
17         private val postFromLocalSone = mock<Post>().apply { whenever(sone).thenReturn(localSone) }
18         override fun createCommand(core: Core) = DeletePostCommand(core)
19
20         @Test
21         fun `command requires write access`() {
22                 assertThat(command.requiresWriteAccess, equalTo(true))
23         }
24
25         @Test
26         fun `request without any parameter results in fcp exception`() {
27                 requestWithoutAnyParameterResultsInFcpException()
28         }
29
30         @Test
31         fun `request with invalid post parameter results in fcp exception`() {
32                 parameters += "Post" to "InvalidPostId"
33                 executeCommandAndExpectFcpException()
34         }
35
36         @Test
37         fun `request with post from remote sone returns error response`() {
38                 parameters += "Post" to "RemotePostId"
39                 whenever(core.getPost("RemotePostId")).thenReturn(postFromRemoteSone)
40                 val response = command.execute(parameters)
41                 assertThat(response.replyParameters["Message"], equalTo("Error"))
42                 assertThat(response.replyParameters["ErrorCode"], equalTo("401"))
43         }
44
45         @Test
46         fun `request with post from local sone deletes posts`() {
47                 parameters += "Post" to "LocalPostId"
48                 whenever(core.getPost("LocalPostId")).thenReturn(postFromLocalSone)
49                 val response = command.execute(parameters)
50                 assertThat(response.replyParameters["Message"], equalTo("PostDeleted"))
51                 verify(core).deletePost(postFromLocalSone)
52         }
53
54 }