Fix tests
This commit is contained in:
parent
a5bc947d27
commit
83a7b2cbdf
|
@ -1,11 +1,8 @@
|
|||
package moe.kageru.kagebot
|
||||
|
||||
import arrow.core.Either
|
||||
import arrow.core.ListK
|
||||
import arrow.core.Option
|
||||
import arrow.core.*
|
||||
import arrow.core.extensions.either.monad.flatMap
|
||||
import arrow.core.extensions.list.foldable.find
|
||||
import arrow.core.firstOrNone
|
||||
import moe.kageru.kagebot.config.Config.server
|
||||
import moe.kageru.kagebot.extensions.*
|
||||
import org.javacord.api.entity.channel.TextChannel
|
||||
|
@ -56,7 +53,8 @@ object Util {
|
|||
|
||||
fun <T> CompletableFuture<T>.asOption(): Option<T> {
|
||||
return try {
|
||||
Option.just(join())
|
||||
val future = join()
|
||||
if (isCompletedExceptionally) None else Option.just(future)
|
||||
} catch (e: CompletionException) {
|
||||
Option.empty()
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package moe.kageru.kagebot
|
|||
|
||||
import io.kotlintest.shouldBe
|
||||
import io.kotlintest.shouldNotBe
|
||||
import io.kotlintest.specs.ShouldSpec
|
||||
import io.kotlintest.specs.StringSpec
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import moe.kageru.kagebot.config.Config
|
||||
|
@ -12,28 +12,30 @@ import moe.kageru.kagebot.features.SetConfigFeature
|
|||
import java.awt.Color
|
||||
|
||||
@ExperimentalStdlibApi
|
||||
class ConfigTest : ShouldSpec({
|
||||
TestUtil.prepareTestEnvironment()
|
||||
"should properly parse test config" {
|
||||
Config.system[SystemSpec.serverId] shouldNotBe null
|
||||
SystemSpec.color shouldBe Color.decode("#1793d0")
|
||||
Config.features.welcome!!.embed shouldNotBe null
|
||||
Config.commands.size shouldBe 3
|
||||
}
|
||||
class ConfigTest : StringSpec() {
|
||||
init {
|
||||
"should properly parse test config" {
|
||||
TestUtil.prepareTestEnvironment()
|
||||
Config.system[SystemSpec.serverId] shouldNotBe null
|
||||
SystemSpec.color shouldBe Color.decode("#1793d0")
|
||||
Config.features.welcome!!.embed shouldNotBe null
|
||||
Config.commands.size shouldBe 3
|
||||
}
|
||||
|
||||
"should parse test config via command" {
|
||||
val redir = "says"
|
||||
val testConfig = """
|
||||
"should parse test config via command" {
|
||||
val redir = "says"
|
||||
val testConfig = """
|
||||
[localization]
|
||||
redirectedMessage = "$redir"
|
||||
messageDeleted = "dongered"
|
||||
timeout = "timeout"
|
||||
""".trimIndent()
|
||||
val message = TestUtil.mockMessage("anything")
|
||||
every { message.messageAttachments } returns listOf(mockk {
|
||||
every { url.openStream().readAllBytes() } returns testConfig.toByteArray()
|
||||
})
|
||||
SetConfigFeature().handle(message)
|
||||
Config.localization[LocalizationSpec.redirectedMessage] shouldBe redir
|
||||
val message = TestUtil.mockMessage("anything")
|
||||
every { message.messageAttachments } returns listOf(mockk {
|
||||
every { url.openStream().readAllBytes() } returns testConfig.toByteArray()
|
||||
})
|
||||
SetConfigFeature().handle(message)
|
||||
Config.localization[LocalizationSpec.redirectedMessage] shouldBe redir
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -85,28 +85,31 @@ object TestUtil {
|
|||
}
|
||||
every { sendMessage(capture(sentMessages)) } returns mockk(relaxed = true)
|
||||
}
|
||||
Globals.api = mockk(relaxed = true) {
|
||||
every { getServerById(any<String>()) } returns Optional.of(mockk(relaxed = true) {
|
||||
every { icon.ifPresent(any()) } just Runs
|
||||
every { channelById(any()) } returns Option.just(channel)
|
||||
every { channelsByName(any()) } returns ListK.just(channel)
|
||||
every { rolesByName("testrole") } returns ListK.just(TEST_ROLE)
|
||||
every { rolesByName("timeout") } returns ListK.just(TIMEOUT_ROLE)
|
||||
every { categoriesByName(any()) } returns ListK.just(mockk())
|
||||
every { createVoiceChannelBuilder().create() } returns mockk {
|
||||
// mockk tries to access Config.server in the mocking block below, so we need to provide some kind of value
|
||||
Config.server = mockk()
|
||||
Config.server = mockk(relaxed = true) {
|
||||
every { icon.ifPresent(any()) } just Runs
|
||||
every { channelById(any()) } returns Option.just(channel)
|
||||
every { channelsByName(any()) } returns ListK.just(channel)
|
||||
every { rolesByName("testrole") } returns ListK.just(TEST_ROLE)
|
||||
every { rolesByName("timeout") } returns ListK.just(TIMEOUT_ROLE)
|
||||
every { categoriesByName(any()) } returns ListK.just(mockk())
|
||||
every { createVoiceChannelBuilder().create() } returns mockk {
|
||||
every { isCompletedExceptionally } returns false
|
||||
every { join().idAsString } returns "12345"
|
||||
}
|
||||
every { getMembersByName(any()) } returns ListK.just(mockk(relaxed = true) {
|
||||
every { id } returns 123
|
||||
every { roles() } returns ListK.just(TEST_ROLE)
|
||||
every { getRoles(any()) } returns ListK.just(TEST_ROLE)
|
||||
every { sendMessage(capture(dmEmbeds)) } returns mockk(relaxed = true) {
|
||||
every { isCompletedExceptionally } returns false
|
||||
every { join().idAsString } returns "12345"
|
||||
}
|
||||
every { membersByName(any()) } returns ListK.just(mockk(relaxed = true) {
|
||||
every { id } returns 123
|
||||
every { roles() } returns ListK.just(TEST_ROLE)
|
||||
every { sendMessage(capture(dmEmbeds)) } returns mockk(relaxed = true) {
|
||||
every { isCompletedExceptionally } returns false
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
Config.server = Globals.api.getServerById("").get()
|
||||
Globals.api = mockk(relaxed = true) {
|
||||
every { getServerById(any<String>()) } returns Optional.of(Config.server)
|
||||
}
|
||||
ConfigParser.initialLoad("testconfig.toml")
|
||||
}
|
||||
|
||||
|
|
|
@ -303,7 +303,7 @@ class CommandTest : StringSpec({
|
|||
feature = "vc"
|
||||
""".trimIndent()
|
||||
) {
|
||||
testMessageSuccess("!vc asd", "Invalid syntax, expected a number, got asd")
|
||||
testMessageSuccess("!vc asd", "Invalid syntax, expected a number as limit, got asd")
|
||||
Dao.isTemporaryVC("12345") shouldBe false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,10 @@ import io.kotlintest.shouldBe
|
|||
import io.kotlintest.specs.StringSpec
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import moe.kageru.kagebot.TestUtil
|
||||
import moe.kageru.kagebot.config.Config
|
||||
import moe.kageru.kagebot.extensions.channelsByName
|
||||
import org.javacord.api.entity.message.embed.EmbedBuilder
|
||||
|
||||
@ExperimentalStdlibApi
|
||||
|
@ -27,8 +29,6 @@ class WelcomeFeatureTest : StringSpec({
|
|||
sentMessages shouldBe mutableListOf(Config.features.welcome!!.embed)
|
||||
}
|
||||
"should send welcome fallback if DMs are disabled" {
|
||||
val message = mutableListOf<String>()
|
||||
TestUtil.prepareTestEnvironment(sentMessages = message)
|
||||
Config.features.welcome!!.welcomeUser(
|
||||
mockk {
|
||||
every { user } returns mockk {
|
||||
|
@ -38,9 +38,11 @@ class WelcomeFeatureTest : StringSpec({
|
|||
every { join() } returns mockk()
|
||||
every { isCompletedExceptionally } returns true
|
||||
}
|
||||
every { mentionTag } returns "<@123>"
|
||||
}
|
||||
}
|
||||
)
|
||||
message shouldBe mutableListOf("<@123> welcome")
|
||||
val channel = Config.server.channelsByName("").first()
|
||||
verify(exactly = 1) { channel.sendMessage("<@123> welcome") }
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue