2019-07-11 20:14:22 +02:00
package moe.kageru.kagebot.features
import io.kotlintest.specs.StringSpec
import io.mockk.every
import io.mockk.mockk
2019-07-17 23:22:18 +02:00
import moe.kageru.kagebot.Kagebot.process
2019-07-11 20:14:22 +02:00
import moe.kageru.kagebot.TestUtil
import moe.kageru.kagebot.TestUtil.mockMessage
import moe.kageru.kagebot.TestUtil.withCommands
2019-07-11 21:05:35 +02:00
import moe.kageru.kagebot.TestUtil.withReplyContents
2019-10-18 19:34:41 +02:00
import moe.kageru.kagebot.config.Config
2019-11-12 22:02:32 +01:00
import moe.kageru.kagebot.extensions.rolesByName
2019-07-11 20:14:22 +02:00
import org.javacord.api.entity.message.embed.EmbedBuilder
2019-07-11 21:05:35 +02:00
import java.util.*
2019-07-11 20:14:22 +02:00
class HelpFeatureTest : StringSpec ( {
2019-11-14 15:10:30 +01:00
val sentEmbeds = mutableListOf < EmbedBuilder > ( )
TestUtil . prepareTestEnvironment ( sentEmbeds = sentEmbeds )
val commandConfig = """
[[command] ]
trigger = " !help "
feature = " help "
[[command] ]
trigger = " !ping "
[[command] ]
trigger = " !something "
[[command] ]
trigger = " not a prefix "
matchType = " CONTAINS "
[[command] ]
trigger = " !prison "
[command.permissions]
hasOneOf = [ " testrole " ]
2023-08-14 10:14:19 +02:00
""" .trimIndent()
2019-11-14 15:10:30 +01:00
" should show prefix command " {
withCommands ( commandConfig ) {
val expected = listOf ( " !ping " , " !something " )
val unexpected = listOf ( " not a prefix " , " !prison " )
withReplyContents ( expected = expected , unexpected = unexpected ) { replies ->
mockMessage ( " !help " , replyEmbeds = replies ) . process ( )
}
2019-07-11 20:14:22 +02:00
}
2019-11-14 15:10:30 +01:00
}
" should show moderation commands for mod " {
withCommands ( commandConfig ) {
val expected = listOf ( " !ping " , " !something " , " !prison " )
val unexpected = listOf ( " not a prefix " )
withReplyContents ( expected = expected , unexpected = unexpected ) { replies ->
val message = mockMessage ( " !help " , replyEmbeds = replies )
2023-08-14 10:14:19 +02:00
every { message . messageAuthor . asUser ( ) } returns Optional . of (
mockk {
every { getRoles ( any ( ) ) } returns listOf (
Config . server . rolesByName ( " testrole " ) . first ( ) ,
)
} ,
)
2019-11-14 15:10:30 +01:00
message . process ( )
}
2019-07-11 20:14:22 +02:00
}
2019-11-14 15:10:30 +01:00
}
2019-07-11 20:14:22 +02:00
} )