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 ( {
val sentEmbeds = mutableListOf < EmbedBuilder > ( )
TestUtil . prepareTestEnvironment ( sentEmbeds = sentEmbeds )
val commandConfig = """
2019-07-11 21:05:35 +02:00
[[command] ]
trigger = " !help "
feature = " help "
2019-07-11 20:14:22 +02:00
[[command] ]
trigger = " !ping "
[[command] ]
trigger = " !something "
[[command] ]
trigger = " not a prefix "
matchType = " CONTAINS "
[[command] ]
trigger = " !prison "
[command.permissions]
hasOneOf = [ " testrole " ]
""" .trimIndent()
" should show prefix command " {
withCommands ( commandConfig ) {
val expected = listOf ( " !ping " , " !something " )
val unexpected = listOf ( " not a prefix " , " !prison " )
2019-07-11 20:39:17 +02:00
withReplyContents ( expected = expected , unexpected = unexpected ) { replies ->
2019-07-17 23:22:18 +02:00
mockMessage ( " !help " , replyEmbeds = replies ) . process ( )
2019-07-11 20:14:22 +02:00
}
}
}
" should show moderation commands for mod " {
withCommands ( commandConfig ) {
val expected = listOf ( " !ping " , " !something " , " !prison " )
val unexpected = listOf ( " not a prefix " )
2019-07-11 20:39:17 +02:00
withReplyContents ( expected = expected , unexpected = unexpected ) { replies ->
2019-07-11 20:14:22 +02:00
val message = mockMessage ( " !help " , replyEmbeds = replies )
every { message . messageAuthor . asUser ( ) } returns Optional . of ( mockk {
every { getRoles ( any ( ) ) } returns listOf (
2019-11-12 22:02:32 +01:00
Config . server . rolesByName ( " testrole " ) . first ( )
2019-07-11 20:14:22 +02:00
)
} )
2019-07-17 23:22:18 +02:00
message . process ( )
2019-07-11 20:14:22 +02:00
}
}
}
} )