make mocks nicer
This commit is contained in:
parent
18ea000b9d
commit
1da7800f3d
|
@ -8,10 +8,7 @@ import io.mockk.mockk
|
|||
import io.mockk.verify
|
||||
import moe.kageru.kagebot.Config.Companion.config
|
||||
import org.javacord.api.entity.message.embed.EmbedBuilder
|
||||
import org.javacord.api.entity.permission.Role
|
||||
import org.javacord.api.entity.user.User
|
||||
import org.javacord.core.entity.message.embed.EmbedBuilderDelegateImpl
|
||||
import java.util.*
|
||||
|
||||
class CommandTest : StringSpec({
|
||||
TestUtil.prepareServerConfig()
|
||||
|
@ -40,11 +37,11 @@ class CommandTest : StringSpec({
|
|||
}
|
||||
"should refuse command without permissions" {
|
||||
val calls = mutableListOf<String>()
|
||||
val mockOptional = mockk<Optional<User>>()
|
||||
every { mockOptional.get().getRoles(any()) } returns emptyList()
|
||||
every { mockOptional.isPresent } returns true
|
||||
val mockMessage = TestUtil.mockMessage("!restricted", capturedCalls = calls)
|
||||
every { mockMessage.messageAuthor.asUser() } returns mockOptional
|
||||
every { mockMessage.messageAuthor.asUser() } returns mockk {
|
||||
every { get().getRoles(any()) } returns emptyList()
|
||||
every { isPresent } returns true
|
||||
}
|
||||
Kagebot.processMessage(mockMessage)
|
||||
calls.size shouldBe 1
|
||||
calls[0] shouldBe config.localization.permissionDenied
|
||||
|
@ -59,17 +56,21 @@ class CommandTest : StringSpec({
|
|||
}
|
||||
"should accept restricted command with permissions" {
|
||||
val calls = mutableListOf<String>()
|
||||
val mockRole = mockk<Role>()
|
||||
every { mockRole.id } returns 452034011393425409
|
||||
val mockOptional = mockk<Optional<User>>()
|
||||
every { mockOptional.isPresent } returns true
|
||||
every { mockOptional.get().getRoles(any()) } returns listOf(mockRole)
|
||||
val mockMessage = TestUtil.mockMessage("!restricted", capturedCalls = calls)
|
||||
every { mockMessage.messageAuthor.asUser() } returns mockOptional
|
||||
every { mockMessage.messageAuthor.asUser() } returns mockk {
|
||||
every { isPresent } returns true
|
||||
every { get().getRoles(any()) } returns listOf(
|
||||
mockk { every { id } returns 452034011393425409 }
|
||||
)
|
||||
}
|
||||
Kagebot.processMessage(mockMessage)
|
||||
calls.size shouldBe 1
|
||||
calls[0] shouldBe "access granted"
|
||||
}
|
||||
/*
|
||||
* This implicitly tests that the message author is not included in anonymous complaints
|
||||
* because getting the author’s name from the mock is undefined.
|
||||
*/
|
||||
"should redirect" {
|
||||
val calls = mutableListOf<EmbedBuilder>()
|
||||
TestUtil.prepareServerConfig(calls)
|
||||
|
@ -77,7 +78,9 @@ class CommandTest : StringSpec({
|
|||
Kagebot.processMessage(TestUtil.mockMessage("!anonRedirect $message"))
|
||||
calls.size shouldBe 1
|
||||
val delegateImpl = calls[0].delegate as EmbedBuilderDelegateImpl
|
||||
delegateImpl.toJsonNode().toString() shouldContain "\"$message\""
|
||||
val embedContent = delegateImpl.toJsonNode().toString()
|
||||
embedContent shouldContain "\"$message\""
|
||||
|
||||
}
|
||||
}) {
|
||||
companion object {
|
||||
|
|
Loading…
Reference in New Issue
Block a user