Cleaned up more tests

This commit is contained in:
Erik C. Thauvin 2022-10-04 12:56:04 -07:00
parent ae9e24cded
commit c24fcb8ef5
12 changed files with 58 additions and 46 deletions

View file

@ -7,7 +7,7 @@ plugins {
id 'net.thauvin.erik.gradle.semver' version '1.0.4' id 'net.thauvin.erik.gradle.semver' version '1.0.4'
id 'org.jetbrains.kotlin.jvm' version '1.7.20' id 'org.jetbrains.kotlin.jvm' version '1.7.20'
id 'org.jetbrains.kotlin.kapt' version '1.7.20' id 'org.jetbrains.kotlin.kapt' version '1.7.20'
id 'org.jetbrains.kotlinx.kover' version '0.6.0' id 'org.jetbrains.kotlinx.kover' version '0.6.1'
id 'org.sonarqube' version '3.4.0.2513' id 'org.sonarqube' version '3.4.0.2513'
id 'pmd' id 'pmd'
} }

View file

@ -67,7 +67,7 @@ class AddonsTest {
addons.add(War()) addons.add(War())
addons.add(Dice()) addons.add(Dice())
addons.add(Lookup()) addons.add(Lookup())
assertThat(addons.modules, "modules").size().isEqualTo(2) assertThat(addons::modules).size().isEqualTo(2)
assertThat(addons.names.modules, "names.modules").containsExactly("Joke", "RockPaperScissors") assertThat(addons.names.modules, "names.modules").containsExactly("Joke", "RockPaperScissors")
// Commands // Commands
@ -78,7 +78,7 @@ class AddonsTest {
addons.add(ChannelFeed("channel")) // no properties, disabled addons.add(ChannelFeed("channel")) // no properties, disabled
p[Ignore.IGNORE_PROP] = "nick" p[Ignore.IGNORE_PROP] = "nick"
addons.add(Ignore()) addons.add(Ignore())
assertThat(addons.commands, "command").size().isEqualTo(3) assertThat(addons::commands).size().isEqualTo(3)
assertThat(addons.names.ops, "names.ops").containsExactly("cycle") assertThat(addons.names.ops, "names.ops").containsExactly("cycle")

View file

@ -31,6 +31,7 @@
*/ */
package net.thauvin.erik.mobibot package net.thauvin.erik.mobibot
import assertk.all
import assertk.assertThat import assertk.assertThat
import assertk.assertions.contains import assertk.assertions.contains
import assertk.assertions.index import assertk.assertions.index
@ -54,8 +55,10 @@ class FeedReaderTest {
@Test @Test
fun readFeedTest() { fun readFeedTest() {
var messages = readFeed("https://feeds.thauvin.net/ethauvin") var messages = readFeed("https://feeds.thauvin.net/ethauvin")
assertThat(messages, "messages").size().isEqualTo(10) assertThat(messages, "messages").all {
assertThat(messages, "messages").index(1).prop(Message::msg).contains("erik.thauvin.net") size().isEqualTo(10)
index(1).prop(Message::msg).contains("erik.thauvin.net")
}
messages = readFeed("https://lorem-rss.herokuapp.com/feed?length=0") messages = readFeed("https://lorem-rss.herokuapp.com/feed?length=0")
assertThat(messages, "messages").index(0).prop(Message::msg).contains("nothing") assertThat(messages, "messages").index(0).prop(Message::msg).contains("nothing")
@ -68,8 +71,7 @@ class FeedReaderTest {
assertThat { readFeed("https://www.example.com") }.isFailure().isInstanceOf(FeedException::class.java) assertThat { readFeed("https://www.example.com") }.isFailure().isInstanceOf(FeedException::class.java)
assertThat { readFeed("https://www.thauvin.net/foo") }.isFailure() assertThat { readFeed("https://www.thauvin.net/foo") }.isFailure().isInstanceOf(IOException::class.java)
.isInstanceOf(IOException::class.java)
assertThat { readFeed("https://www.examplesfoo.com/") }.isFailure() assertThat { readFeed("https://www.examplesfoo.com/") }.isFailure()
.isInstanceOf(UnknownHostException::class.java) .isInstanceOf(UnknownHostException::class.java)

View file

@ -32,6 +32,7 @@
package net.thauvin.erik.mobibot.commands.seen package net.thauvin.erik.mobibot.commands.seen
import assertk.all
import assertk.assertThat import assertk.assertThat
import assertk.assertions.isEmpty import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo import assertk.assertions.isEqualTo
@ -39,6 +40,7 @@ import assertk.assertions.isGreaterThan
import assertk.assertions.isNotEqualTo import assertk.assertions.isNotEqualTo
import assertk.assertions.isNotNull import assertk.assertions.isNotNull
import assertk.assertions.key import assertk.assertions.key
import assertk.assertions.prop
import assertk.assertions.size import assertk.assertions.size
import org.testng.annotations.AfterClass import org.testng.annotations.AfterClass
import org.testng.annotations.BeforeClass import org.testng.annotations.BeforeClass
@ -65,18 +67,20 @@ class SeenTest {
@Test(priority = 1, groups = ["commands"]) @Test(priority = 1, groups = ["commands"])
fun loadTest() { fun loadTest() {
seen.clear() seen.clear()
assertThat(seen.seenNicks, "seenNicks").isEmpty() assertThat(seen::seenNicks).isEmpty()
seen.load() seen.load()
assertThat(seen.seenNicks).key(nick).isNotNull() assertThat(seen::seenNicks).key(nick).isNotNull()
} }
@Test(groups = ["commands"]) @Test(groups = ["commands"])
fun addTest() { fun addTest() {
val last = seen.seenNicks[nick]?.lastSeen val last = seen.seenNicks[nick]?.lastSeen
seen.add(nick.lowercase()) seen.add(nick.lowercase())
assertThat(seen.seenNicks, "seenNicks").size().isEqualTo(1) assertThat(seen).all {
assertThat(seen.seenNicks[nick]?.lastSeen, "seenNicks[$nick].lastSeen").isNotEqualTo(last) prop(Seen::seenNicks).size().isEqualTo(1)
assertThat(seen.seenNicks[nick]?.nick, "seenNicks[$nick].nick").isEqualTo(nick.lowercase()) prop(Seen::seenNicks).key(nick).isNotNull().prop(SeenNick::lastSeen).isNotEqualTo(last)
prop(Seen::seenNicks).key(nick).isNotNull().prop(SeenNick::nick).isNotNull().isEqualTo(nick.lowercase())
}
} }
@Test(priority = 10, groups = ["commands"]) @Test(priority = 10, groups = ["commands"])
@ -84,6 +88,6 @@ class SeenTest {
seen.clear() seen.clear()
seen.save() seen.save()
seen.load() seen.load()
assertThat(seen.seenNicks, "seenNicks").size().isEqualTo(0) assertThat(seen::seenNicks).size().isEqualTo(0)
} }
} }

View file

@ -33,6 +33,7 @@ package net.thauvin.erik.mobibot.entries
import assertk.all import assertk.all
import assertk.assertThat import assertk.assertThat
import assertk.assertions.index
import assertk.assertions.isEmpty import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo import assertk.assertions.isEqualTo
import assertk.assertions.isFalse import assertk.assertions.isFalse
@ -96,9 +97,11 @@ class EntryLinkTest {
val tag = "test" val tag = "test"
val tags = listOf(SyndCategoryImpl().apply { name = tag }) val tags = listOf(SyndCategoryImpl().apply { name = tag })
val link = EntryLink("link", "title", "nick", "channel", Date(), tags) val link = EntryLink("link", "title", "nick", "channel", Date(), tags)
assertThat(link.tags, "tags").size().isEqualTo(tags.size) assertThat(link, "link").all {
assertThat(link.tags[0].name, "tag[0].name").isEqualTo(tag) prop(EntryLink::tags).size().isEqualTo(tags.size)
assertThat(link.pinboardTags, "pinboardTags").isEqualTo("nick,$tag") prop(EntryLink::tags).index(0).prop(SyndCategory::getName).isEqualTo(tag)
prop(EntryLink::pinboardTags).isEqualTo("nick,$tag")
}
} }
@Test(groups = ["entries"]) @Test(groups = ["entries"])
@ -118,13 +121,12 @@ class EntryLinkTest {
for ((i, tag) in tags.withIndex()) { for ((i, tag) in tags.withIndex()) {
assertThat(tag.name, "tag.name($i)").isEqualTo("tag${i + 1}") assertThat(tag.name, "tag.name($i)").isEqualTo("tag${i + 1}")
} }
assertThat(entryLink.tags, "tags").size().isEqualTo(5) assertThat(entryLink::tags).size().isEqualTo(5)
entryLink.setTags("-tag5") entryLink.setTags("-tag5")
entryLink.setTags("+mobitopia") entryLink.setTags("+mobitopia")
entryLink.setTags("tag4") entryLink.setTags("tag4")
entryLink.setTags("-mobitopia") entryLink.setTags("-mobitopia")
assertThat(entryLink.pinboardTags, "pinboardTags") assertThat(entryLink::pinboardTags).isEqualTo(entryLink.nick + ",tag1,tag2,tag3,tag4,mobitopia")
.isEqualTo(entryLink.nick + ",tag1,tag2,tag3,tag4,mobitopia")
val size = entryLink.tags.size val size = entryLink.tags.size
entryLink.setTags("") entryLink.setTags("")
assertThat(entryLink.tags, "setTags('')").size().isEqualTo(size) assertThat(entryLink.tags, "setTags('')").size().isEqualTo(size)

View file

@ -73,7 +73,7 @@ class CryptoPricesTest {
@Test(groups = ["modules"]) @Test(groups = ["modules"])
fun testGetCurrencyName() { fun testGetCurrencyName() {
assertThat(getCurrencyName("USD")).isEqualTo("US Dollar") assertThat(getCurrencyName("USD"), "USD").isEqualTo("US Dollar")
assertThat(getCurrencyName("EUR")).isEqualTo("Euro") assertThat(getCurrencyName("EUR"), "EUR").isEqualTo("Euro")
} }
} }

View file

@ -81,8 +81,10 @@ class GoogleSearchTest : LocalProperties() {
try { try {
var query = "mobibot" var query = "mobibot"
var messages = searchGoogle(query, apiKey, cseKey) var messages = searchGoogle(query, apiKey, cseKey)
assertThat(messages, "searchGoogle($query)").isNotEmpty() assertThat(messages, "searchGoogle($query)").all {
assertThat(messages, "searchGoogle($query)").index(0).prop(Message::msg).contains(query, true) isNotEmpty()
index(0).prop(Message::msg).contains(query, true)
}
query = "adadflkjl" query = "adadflkjl"
messages = searchGoogle(query, apiKey, cseKey) messages = searchGoogle(query, apiKey, cseKey)

View file

@ -31,14 +31,13 @@
*/ */
package net.thauvin.erik.mobibot.modules package net.thauvin.erik.mobibot.modules
import assertk.all
import assertk.assertThat import assertk.assertThat
import assertk.assertions.each
import assertk.assertions.isGreaterThan import assertk.assertions.isGreaterThan
import assertk.assertions.isInstanceOf import assertk.assertions.isInstanceOf
import assertk.assertions.isNotEmpty
import assertk.assertions.prop
import assertk.assertions.size import assertk.assertions.size
import net.thauvin.erik.mobibot.modules.Joke.Companion.randomJoke import net.thauvin.erik.mobibot.modules.Joke.Companion.randomJoke
import net.thauvin.erik.mobibot.msg.Message
import net.thauvin.erik.mobibot.msg.PublicMessage import net.thauvin.erik.mobibot.msg.PublicMessage
import org.testng.annotations.Test import org.testng.annotations.Test
@ -50,10 +49,11 @@ class JokeTest {
@Throws(ModuleException::class) @Throws(ModuleException::class)
fun testRandomJoke() { fun testRandomJoke() {
val joke = randomJoke() val joke = randomJoke()
assertThat(joke, "randomJoke()").size().isGreaterThan(0) assertThat(joke, "randomJoke()").all {
joke.forEach { size().isGreaterThan(0)
assertThat(it, "randomJoke()").isInstanceOf(PublicMessage::class.java) each {
assertThat(it, "randomJoke()").prop(Message::msg).isNotEmpty() it.isInstanceOf(PublicMessage::class.java)
}
} }
} }
} }

View file

@ -66,12 +66,12 @@ class ModuleExceptionTest {
@Test(dataProvider = "dp") @Test(dataProvider = "dp")
fun testGetDebugMessage(e: ModuleException) { fun testGetDebugMessage(e: ModuleException) {
assertThat(e.debugMessage, "debug message is invalid").isEqualTo(debugMessage) assertThat(e::debugMessage).isEqualTo(debugMessage)
} }
@Test(dataProvider = "dp") @Test(dataProvider = "dp")
fun testGetMessage(e: ModuleException) { fun testGetMessage(e: ModuleException) {
assertThat(e, "message is invalid").hasMessage(message) assertThat(e).hasMessage(message)
} }
@Test(groups = ["modules"]) @Test(groups = ["modules"])

View file

@ -34,17 +34,18 @@ package net.thauvin.erik.mobibot.modules
import assertk.assertThat import assertk.assertThat
import assertk.assertions.isEqualTo import assertk.assertions.isEqualTo
import net.thauvin.erik.mobibot.modules.RockPaperScissors.Companion.winLoseOrDraw
import org.testng.annotations.Test import org.testng.annotations.Test
class RockPaperScissorsTest { class RockPaperScissorsTest {
@Test(groups = ["modules"]) @Test(groups = ["modules"])
fun testWinLoseOrDraw() { fun testWinLoseOrDraw() {
assertThat(RockPaperScissors.winLoseOrDraw("scissors", "paper"), "scissors vs. paper").isEqualTo("win") assertThat(winLoseOrDraw("scissors", "paper"), "scissors vs. paper").isEqualTo("win")
assertThat(RockPaperScissors.winLoseOrDraw("paper", "rock"), "paper vs. rock").isEqualTo("win") assertThat(winLoseOrDraw("paper", "rock"), "paper vs. rock").isEqualTo("win")
assertThat(RockPaperScissors.winLoseOrDraw("rock", "scissors"), "rock vs. scissors").isEqualTo("win") assertThat(winLoseOrDraw("rock", "scissors"), "rock vs. scissors").isEqualTo("win")
assertThat(RockPaperScissors.winLoseOrDraw("paper", "scissors"), "paper vs. scissors").isEqualTo("lose") assertThat(winLoseOrDraw("paper", "scissors"), "paper vs. scissors").isEqualTo("lose")
assertThat(RockPaperScissors.winLoseOrDraw("rock", "paper"), "rock vs. paper").isEqualTo("lose") assertThat(winLoseOrDraw("rock", "paper"), "rock vs. paper").isEqualTo("lose")
assertThat(RockPaperScissors.winLoseOrDraw("scissors", "rock"), "scissors vs. rock").isEqualTo("lose") assertThat(winLoseOrDraw("scissors", "rock"), "scissors vs. rock").isEqualTo("lose")
assertThat(RockPaperScissors.winLoseOrDraw("scissors", "scissors"), "scissors vs. scissors").isEqualTo("draw") assertThat(winLoseOrDraw("scissors", "scissors"), "scissors vs. scissors").isEqualTo("draw")
} }
} }

View file

@ -39,17 +39,18 @@ import assertk.assertions.isFailure
import assertk.assertions.isInstanceOf import assertk.assertions.isInstanceOf
import net.thauvin.erik.mobibot.ExceptionSanitizer.sanitize import net.thauvin.erik.mobibot.ExceptionSanitizer.sanitize
import net.thauvin.erik.mobibot.LocalProperties import net.thauvin.erik.mobibot.LocalProperties
import net.thauvin.erik.mobibot.modules.WolframAlpha.Companion.queryWolfram
import org.testng.annotations.Test import org.testng.annotations.Test
class WolframAlphaTest : LocalProperties() { class WolframAlphaTest : LocalProperties() {
@Test(groups = ["modules"]) @Test(groups = ["modules"])
fun testAppId() { fun testAppId() {
assertThat { WolframAlpha.queryWolfram("1 gallon to liter", appId = "DEMO") } assertThat { queryWolfram("1 gallon to liter", appId = "DEMO") }
.isFailure() .isFailure()
.isInstanceOf(ModuleException::class.java) .isInstanceOf(ModuleException::class.java)
.hasMessage("Error 1: Invalid appid") .hasMessage("Error 1: Invalid appid")
assertThat { WolframAlpha.queryWolfram("1 gallon to liter", appId = "") } assertThat { queryWolfram("1 gallon to liter", appId = "") }
.isFailure() .isFailure()
.isInstanceOf(ModuleException::class.java) .isInstanceOf(ModuleException::class.java)
} }
@ -60,11 +61,11 @@ class WolframAlphaTest : LocalProperties() {
val apiKey = getProperty(WolframAlpha.WOLFRAM_APPID_KEY) val apiKey = getProperty(WolframAlpha.WOLFRAM_APPID_KEY)
try { try {
var query = "SFO to SEA" var query = "SFO to SEA"
assertThat(WolframAlpha.queryWolfram(query, appId = apiKey), "queryWolfram($query)").contains("miles") assertThat(queryWolfram(query, appId = apiKey), "queryWolfram($query)").contains("miles")
query = "SFO to LAX" query = "SFO to LAX"
assertThat( assertThat(
WolframAlpha.queryWolfram(query, WolframAlpha.METRIC, apiKey), queryWolfram(query, WolframAlpha.METRIC, apiKey),
"queryWolfram($query)" "queryWolfram($query)"
).contains("kilometers") ).contains("kilometers")
} catch (e: ModuleException) { } catch (e: ModuleException) {

View file

@ -1,9 +1,9 @@
#Generated by the Semver Plugin for Gradle #Generated by the Semver Plugin for Gradle
#Mon Oct 03 11:12:48 PDT 2022 #Tue Oct 04 12:17:53 PDT 2022
version.buildmeta=727 version.buildmeta=737
version.major=0 version.major=0
version.minor=8 version.minor=8
version.patch=0 version.patch=0
version.prerelease=rc version.prerelease=rc
version.project=mobibot version.project=mobibot
version.semver=0.8.0-rc+727 version.semver=0.8.0-rc+737