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