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.*
9 import org.mockito.Mockito.*
12 * Unit test for [DeletePostCommand].
14 class DeletePostCommandTest : SoneCommandTest() {
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)
21 fun `command requires write access`() {
22 assertThat(command.requiresWriteAccess, equalTo(true))
26 fun `request without any parameter results in fcp exception`() {
27 requestWithoutAnyParameterResultsInFcpException()
31 fun `request with invalid post parameter results in fcp exception`() {
32 parameters += "Post" to "InvalidPostId"
33 executeCommandAndExpectFcpException()
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"))
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)