2019-06-15 14:15:34 +02:00
package moe.kageru.kagebot.features
2019-06-12 23:43:36 +02:00
import io.kotlintest.shouldBe
import io.kotlintest.specs.StringSpec
import io.mockk.every
import io.mockk.mockk
2019-11-24 14:03:45 +01:00
import io.mockk.verify
2019-06-15 14:15:34 +02:00
import moe.kageru.kagebot.TestUtil
2019-07-17 23:42:12 +02:00
import moe.kageru.kagebot.config.Config
2019-11-24 14:03:45 +01:00
import moe.kageru.kagebot.extensions.channelsByName
2019-06-12 23:43:36 +02:00
import org.javacord.api.entity.message.embed.EmbedBuilder
2019-06-15 12:03:43 +02:00
2019-07-17 23:42:12 +02:00
@ExperimentalStdlibApi
2019-06-15 12:03:43 +02:00
class WelcomeFeatureTest : StringSpec ( {
2019-11-14 15:10:30 +01:00
TestUtil . prepareTestEnvironment ( )
" should send welcome " {
val sentMessages = mutableListOf < EmbedBuilder > ( )
Config . features . welcome !! . welcomeUser (
mockk {
every { user } returns mockk {
every { discriminatedName } returns " testuser#1234 "
every { sendMessage ( capture ( sentMessages ) ) } returns mockk {
every { join ( ) } returns mockk ( )
every { isCompletedExceptionally } returns false
}
}
}
)
sentMessages shouldBe mutableListOf ( Config . features . welcome !! . embed )
}
" should send welcome fallback if DMs are disabled " {
Config . features . welcome !! . welcomeUser (
mockk {
every { user } returns mockk {
every { discriminatedName } returns " testuser#1234 "
every { id } returns 123
every { sendMessage ( any < EmbedBuilder > ( ) ) } returns mockk {
every { join ( ) } returns mockk ( )
every { isCompletedExceptionally } returns true
}
2019-11-24 14:03:45 +01:00
every { mentionTag } returns " <@123> "
2019-11-14 15:10:30 +01:00
}
}
)
2019-11-24 14:03:45 +01:00
val channel = Config . server . channelsByName ( " " ) . first ( )
verify ( exactly = 1 ) { channel . sendMessage ( " <@123> welcome " ) }
2019-11-14 15:10:30 +01:00
}
2019-06-12 23:43:36 +02:00
} )