Cleaned up and added more tests.
This commit is contained in:
parent
af9546e3d1
commit
04e88264cd
9 changed files with 76 additions and 17 deletions
|
@ -106,7 +106,7 @@ object Utils {
|
|||
*/
|
||||
@JvmStatic
|
||||
fun colorize(s: String?, color: String): String {
|
||||
return if (s.isNullOrEmpty()) {
|
||||
return if (s.isNullOrBlank()) {
|
||||
Colors.NORMAL
|
||||
} else if (Colors.BOLD == color || Colors.REVERSE == color) {
|
||||
color + s + color
|
||||
|
|
|
@ -198,8 +198,8 @@ class StockQuote(bot: Mobibot) : ThreadedModule(bot) {
|
|||
data.forEach {
|
||||
add(
|
||||
NoticeMessage(
|
||||
"${it.first}:".padEnd(pad).prependIndent(),
|
||||
unescapeXml(quote.getString(it.second))
|
||||
"${it.first}:".padEnd(pad).prependIndent()
|
||||
+ unescapeXml(quote.getString(it.second))
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -72,4 +72,8 @@ open class Message {
|
|||
this.isError = isError
|
||||
this.isPrivate = isPrivate
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Message(color='$color', isError=$isError, isNotice=$isNotice, isPrivate=$isPrivate, msg='$msg')"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,11 +51,15 @@ class PinboardUtilsTest : LocalProperties() {
|
|||
val entry = EntryLink(url, "Test Example", "ErikT", "", "#mobitopia", listOf("test"))
|
||||
|
||||
PinboardUtils.addPin(pinboard, ircServer, entry)
|
||||
assertTrue(validatePin(apiToken, ircServer, entry.link), "addPin")
|
||||
entry.link = "https://www.foo.com/"
|
||||
assertTrue(validatePin(apiToken, url = entry.link, entry.title, entry.nick, entry.channel), "addPin")
|
||||
|
||||
entry.link = "https://www.foo.com/"
|
||||
PinboardUtils.updatePin(pinboard, ircServer, url, entry)
|
||||
assertTrue(validatePin(apiToken, ircServer, entry.link), "updatePin")
|
||||
assertTrue(validatePin(apiToken, url = entry.link, ircServer), "updatePin")
|
||||
|
||||
entry.title = "Foo Title"
|
||||
PinboardUtils.updatePin(pinboard, ircServer, entry.link, entry)
|
||||
assertTrue(validatePin(apiToken, url = entry.link, entry.title), "update title")
|
||||
|
||||
PinboardUtils.deletePin(pinboard, entry)
|
||||
assertFalse(validatePin(apiToken, url = entry.link), "deletePin")
|
||||
|
@ -67,7 +71,7 @@ class PinboardUtilsTest : LocalProperties() {
|
|||
assertTrue(d.toTimestamp().matches("[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z".toRegex()))
|
||||
}
|
||||
|
||||
private fun validatePin(apiToken: String, ircServer: String = "", url: String): Boolean {
|
||||
private fun validatePin(apiToken: String, url: String, vararg matches: String): Boolean {
|
||||
val response = Utils.urlReader(
|
||||
URL(
|
||||
"https://api.pinboard.in/v1/posts/get?auth_token=${apiToken}&tag=test&"
|
||||
|
@ -75,6 +79,12 @@ class PinboardUtilsTest : LocalProperties() {
|
|||
)
|
||||
)
|
||||
|
||||
return response.contains(url) && response.contains(ircServer)
|
||||
matches.forEach {
|
||||
if (!response.contains(it)) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return response.contains(url)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,6 +58,8 @@ class TellMessageTest {
|
|||
assertThat(tellMessage.isMatch(sender)).describedAs("match sender").isTrue
|
||||
assertThat(tellMessage.isMatch(recipient)).describedAs("match recipient").isTrue
|
||||
assertThat(tellMessage.isMatch("foo")).describedAs("foo is no match").isFalse
|
||||
tellMessage.isReceived = false
|
||||
assertThat(tellMessage.receptionDate).describedAs("reception date not set").isEqualTo(LocalDateTime.MIN)
|
||||
tellMessage.isReceived = true
|
||||
assertThat(tellMessage.isReceived).describedAs("is received").isTrue
|
||||
assertThat(isValidDate(tellMessage.receptionDate)).describedAs("received is valid date/time").isTrue
|
||||
|
|
|
@ -32,9 +32,11 @@
|
|||
package net.thauvin.erik.mobibot.entries
|
||||
|
||||
import com.rometools.rome.feed.synd.SyndCategory
|
||||
import com.rometools.rome.feed.synd.SyndCategoryImpl
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.testng.annotations.Test
|
||||
import java.security.SecureRandom
|
||||
import java.util.Date
|
||||
|
||||
/**
|
||||
* The `EntryUtilsTest` class.
|
||||
|
@ -74,6 +76,29 @@ class EntryLinkTest {
|
|||
assertThat(entryLink.getComment(0).comment).describedAs("getComment(something)").isEqualTo("something")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testConstructor() {
|
||||
val tag = "test"
|
||||
val tags = listOf(SyndCategoryImpl().apply { name = tag })
|
||||
val link = EntryLink("link", "title", "nick", "channel", Date(), tags)
|
||||
assertThat(link.tags.size).describedAs("check tag size").isEqualTo(tags.size)
|
||||
assertThat(link.tags[0].name).describedAs("check tag name").isEqualTo(tag)
|
||||
assertThat(link.pinboardTags).describedAs("check pinboard tag").isEqualTo("nick,$tag")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMatches() {
|
||||
assertThat(entryLink.matches("mobitopia")).describedAs("match mobitopia").isTrue
|
||||
assertThat(entryLink.matches("skynx")).describedAs("match nick").isTrue
|
||||
assertThat(entryLink.matches("www.mobitopia.org")).describedAs("match url").isTrue
|
||||
assertThat(entryLink.matches("foo")).describedAs("match foo").isFalse
|
||||
assertThat(entryLink.matches("")).describedAs("match empty").isFalse
|
||||
assertThat(entryLink.matches(null)).describedAs("match null").isFalse
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun testTags() {
|
||||
val tags: List<SyndCategory> = entryLink.tags
|
||||
|
@ -88,5 +113,10 @@ class EntryLinkTest {
|
|||
entryLink.setTags("-mobitopia")
|
||||
assertThat(entryLink.pinboardTags).describedAs("getPinboardTags()")
|
||||
.isEqualTo(entryLink.nick + ",tag1,tag2,tag3,tag4,mobitopia")
|
||||
val size = entryLink.tags.size
|
||||
entryLink.setTags("")
|
||||
assertThat(entryLink.tags.size).describedAs("empty tag").isEqualTo(size)
|
||||
entryLink.setTags(" ")
|
||||
assertThat(entryLink.tags.size).describedAs("blank tag").isEqualTo(size)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
package net.thauvin.erik.mobibot.modules
|
||||
|
||||
import org.assertj.core.api.Assertions
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.testng.annotations.DataProvider
|
||||
import org.testng.annotations.Test
|
||||
import java.io.IOException
|
||||
|
@ -57,19 +57,30 @@ class ModuleExceptionTest {
|
|||
|
||||
@Test(dataProvider = "dp")
|
||||
fun testGetDebugMessage(e: ModuleException) {
|
||||
Assertions.assertThat(e.debugMessage).describedAs("get debug message").isEqualTo(debugMessage)
|
||||
assertThat(e.debugMessage).describedAs("get debug message").isEqualTo(debugMessage)
|
||||
}
|
||||
|
||||
@Test(dataProvider = "dp")
|
||||
fun testGetMessage(e: ModuleException) {
|
||||
Assertions.assertThat(e.message).describedAs("get message").isEqualTo(message)
|
||||
assertThat(e.message).describedAs("get message").isEqualTo(message)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testGetSanitizedMessage() {
|
||||
val apiKey = "1234567890"
|
||||
val e = ModuleException(debugMessage, message, IOException("URL http://foo.com?apiKey=$apiKey&userID=me"))
|
||||
Assertions.assertThat(e.getSanitizedMessage(apiKey)).describedAs("sanitized url")
|
||||
var e = ModuleException(debugMessage, message, IOException("URL http://foo.com?apiKey=$apiKey&userID=me"))
|
||||
assertThat(e.getSanitizedMessage(apiKey)).describedAs("sanitized url")
|
||||
.contains("xxxxxxxxxx").doesNotContain(apiKey)
|
||||
|
||||
e = ModuleException(debugMessage, message, null)
|
||||
assertThat(e.getSanitizedMessage(apiKey)).describedAs("no cause").contains(message)
|
||||
|
||||
val msg: String? = null
|
||||
e = ModuleException(debugMessage, msg, IOException(msg))
|
||||
assertThat(e.getSanitizedMessage(apiKey)).describedAs("no message").isEqualTo("")
|
||||
|
||||
|
||||
e = ModuleException(msg, msg, IOException(apiKey))
|
||||
assertThat(e.getSanitizedMessage(apiKey)).describedAs("null message").doesNotContain(apiKey)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,9 @@ class StockQuoteTest : LocalProperties() {
|
|||
val messages = getQuote("apple inc", apiKey)
|
||||
assertThat(messages).describedAs("response not empty").isNotEmpty
|
||||
assertThat(messages[0].msg).describedAs("same stock symbol").startsWith("Symbol: AAPL")
|
||||
assertThat(messages[1].msg).describedAs("price label").startsWith(" Price: ")
|
||||
assertThat(messages[1].msg).describedAs("price label").startsWith("Price: ".prependIndent())
|
||||
assertThat(messages[2].msg).describedAs("previous label").startsWith("Previous: ".prependIndent())
|
||||
assertThat(messages[3].msg).describedAs("open label").startsWith("Open: ".prependIndent())
|
||||
try {
|
||||
getQuote("blahfoo", apiKey)
|
||||
} catch (e: ModuleException) {
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Thu Jul 08 12:26:26 PDT 2021
|
||||
version.buildmeta=930
|
||||
#Fri Jul 30 02:43:43 PDT 2021
|
||||
version.buildmeta=1111
|
||||
version.major=0
|
||||
version.minor=8
|
||||
version.patch=0
|
||||
version.prerelease=beta
|
||||
version.project=mobibot
|
||||
version.semver=0.8.0-beta+930
|
||||
version.semver=0.8.0-beta+1111
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue