1 package net.pterodactylus.sone.fcp
3 import net.pterodactylus.sone.core.Core
4 import net.pterodactylus.sone.data.Post
5 import net.pterodactylus.sone.data.Sone
6 import net.pterodactylus.sone.freenet.fcp.FcpException
7 import net.pterodactylus.sone.test.asOptional
8 import net.pterodactylus.sone.test.mock
9 import net.pterodactylus.sone.test.whenever
10 import org.hamcrest.MatcherAssert.assertThat
11 import org.hamcrest.Matchers.equalTo
12 import org.junit.Before
14 import org.mockito.Mockito.verify
17 * Unit test for [LikeReplyCommand].
19 class LikeReplyCommandTest : SoneCommandTest() {
21 private val reply = createReply("ReplyId", mock<Sone>(), mock<Post>(), 1000, "Text")
23 override fun createCommand(core: Core) = LikeReplyCommand(core)
26 fun setupRepliesAndSones() {
27 whenever(core.getPostReply("ReplyId")).thenReturn(reply.asOptional())
28 whenever(core.getSone("RemoteSoneId")).thenReturn(remoteSone.asOptional())
29 whenever(core.getSone("LocalSoneId")).thenReturn(localSone.asOptional())
33 fun `request without parameters results in FCP exception`() {
34 requestWithoutAnyParameterResultsInFcpException()
38 fun `request with invalid reply results in FCP exception`() {
39 parameters += "Reply" to "InvalidReplyId"
40 expectedException.expect(FcpException::class.java)
41 command.execute(parameters)
45 fun `request without sone results in FCP exception`() {
46 parameters += "Reply" to "ReplyId"
47 expectedException.expect(FcpException::class.java)
48 command.execute(parameters)
52 fun `request with invalid sone results in FCP exception`() {
53 parameters += "Reply" to "ReplyId"
54 parameters += "Sone" to "InvalidSoneId"
55 expectedException.expect(FcpException::class.java)
56 command.execute(parameters)
60 fun `request with remote sone results in FCP exception`() {
61 parameters += "Reply" to "ReplyId"
62 parameters += "Sone" to "RemoteSoneId"
63 expectedException.expect(FcpException::class.java)
64 command.execute(parameters)
68 fun `request with local sone adds reply id to sone`() {
69 whenever(core.getLikes(reply)).thenReturn(setOf(mock<Sone>(), mock<Sone>(), mock<Sone>()))
70 parameters += "Reply" to "ReplyId"
71 parameters += "Sone" to "LocalSoneId"
72 val replyParameters = command.execute(parameters).replyParameters
73 assertThat(replyParameters["Message"], equalTo("ReplyLiked"))
74 assertThat(replyParameters["LikeCount"], equalTo("3"))
75 verify(localSone).addLikedReplyId("ReplyId")