diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml index d0fbcc9..33a9f22 100644 --- a/config/detekt/baseline.xml +++ b/config/detekt/baseline.xml @@ -86,6 +86,7 @@ ThrowsCount:WolframAlpha.kt$WolframAlpha.Companion$@JvmStatic @Throws(ModuleException::class) fun queryWolfram(query: String, units: String = IMPERIAL, appId: String?): String TooGenericExceptionCaught:StockQuote.kt$StockQuote.Companion$e: NullPointerException TooGenericExceptionCaught:Weather2.kt$Weather2.Companion$e: NullPointerException + TooManyFunctions:EntryLink.kt$EntryLink : Serializable TooManyFunctions:Mobibot.kt$Mobibot : ListenerAdapter TooManyFunctions:Tell.kt$Tell : AbstractCommand diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/Addons.kt b/src/main/kotlin/net/thauvin/erik/mobibot/Addons.kt index db5fb25..8720e95 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/Addons.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/Addons.kt @@ -46,8 +46,8 @@ import java.util.Properties */ class Addons(private val props: Properties) { private val logger: Logger = LoggerFactory.getLogger(Addons::class.java) - private val disabledModules = props.getProperty("disabled-modules", "").split(LinksManager.TAG_MATCH.toRegex()) - private val disableCommands = props.getProperty("disabled-commands", "").split(LinksManager.TAG_MATCH.toRegex()) + private val disabledModules = props.getProperty("disabled-modules", "").split(LinksManager.TAG_MATCH) + private val disableCommands = props.getProperty("disabled-commands", "").split(LinksManager.TAG_MATCH) val commands: MutableList = mutableListOf() val modules: MutableList = mutableListOf() diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/Pinboard.kt b/src/main/kotlin/net/thauvin/erik/mobibot/Pinboard.kt index 9d46188..ee9b020 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/Pinboard.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/Pinboard.kt @@ -55,13 +55,9 @@ class Pinboard { if (poster.apiToken.isNotBlank()) { runBlocking { launch { - poster.addPin( - entry.link, - entry.title, - entry.postedBy(ircServer), - entry.pinboardTags, - entry.date.toTimestamp() - ) + with(entry) { + poster.addPin(link, title, postedBy(ircServer), formatTags(), date.toTimestamp()) + } } } } @@ -98,7 +94,7 @@ class Pinboard { if (oldUrl != link) { poster.deletePin(oldUrl) } - poster.addPin(link, title, entry.postedBy(ircServer), pinboardTags, date.toTimestamp()) + poster.addPin(link, title, postedBy(ircServer), formatTags(), date.toTimestamp()) } } } @@ -106,7 +102,7 @@ class Pinboard { } /** - * Format a date to a UTC timestamp. + * Formats a date to a UTC timestamp. */ private fun Date.toTimestamp(): String { return ZonedDateTime.ofInstant( @@ -115,6 +111,13 @@ class Pinboard { ).format(DateTimeFormatter.ISO_INSTANT) } + /** + * Formats the tags for pinboard. + */ + private fun EntryLink.formatTags(): String { + return nick + formatTags(",", ",") + } + /** * Returns the pinboard.in extended attribution line. */ diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/commands/Ignore.kt b/src/main/kotlin/net/thauvin/erik/mobibot/commands/Ignore.kt index 7306cea..5d03cb8 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/commands/Ignore.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/commands/Ignore.kt @@ -141,7 +141,7 @@ class Ignore : AbstractCommand() { override fun setProperty(key: String, value: String) { super.setProperty(key, value) if (IGNORE_PROP == key) { - ignored.addAll(value.split(LinksManager.TAG_MATCH.toRegex())) + ignored.addAll(value.split(LinksManager.TAG_MATCH) } } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Comment.kt b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Comment.kt index e60955a..5a09836 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Comment.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Comment.kt @@ -38,7 +38,7 @@ import net.thauvin.erik.mobibot.Utils.helpFormat import net.thauvin.erik.mobibot.Utils.isChannelOp import net.thauvin.erik.mobibot.Utils.sendMessage import net.thauvin.erik.mobibot.commands.AbstractCommand -import net.thauvin.erik.mobibot.entries.EntriesUtils.buildComment +import net.thauvin.erik.mobibot.entries.EntriesUtils.printComment import net.thauvin.erik.mobibot.entries.EntriesUtils.toLinkLabel import net.thauvin.erik.mobibot.entries.EntryLink import org.pircbotx.hooks.types.GenericMessageEvent @@ -111,7 +111,7 @@ class Comment : AbstractCommand() { if (event.isChannelOp(channel) && cmd.length > 1) { val comment = entry.getComment(commentIndex) comment.nick = cmd.substring(1) - event.sendMessage(buildComment(entryIndex, commentIndex, comment)) + event.sendMessage(printComment(entryIndex, commentIndex, comment)) LinksManager.entries.save() } else { event.sendMessage("Please ask a channel op to change the author of this comment for you.") @@ -142,11 +142,11 @@ class Comment : AbstractCommand() { event: GenericMessageEvent ) { entry.setComment(commentIndex, cmd, event.user.nick) - event.sendMessage(buildComment(entryIndex, commentIndex, entry.getComment(commentIndex))) + event.sendMessage(printComment(entryIndex, commentIndex, entry.getComment(commentIndex))) LinksManager.entries.save() } private fun showComment(entry: EntryLink, entryIndex: Int, commentIndex: Int, event: GenericMessageEvent) { - event.sendMessage(buildComment(entryIndex, commentIndex, entry.getComment(commentIndex))) + event.sendMessage(printComment(entryIndex, commentIndex, entry.getComment(commentIndex))) } } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/LinksManager.kt b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/LinksManager.kt index d0c9769..af6adf4 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/LinksManager.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/LinksManager.kt @@ -42,7 +42,7 @@ import net.thauvin.erik.mobibot.Utils.today import net.thauvin.erik.mobibot.commands.AbstractCommand import net.thauvin.erik.mobibot.commands.Ignore.Companion.isNotIgnored import net.thauvin.erik.mobibot.entries.Entries -import net.thauvin.erik.mobibot.entries.EntriesUtils.buildLink +import net.thauvin.erik.mobibot.entries.EntriesUtils.printLink import net.thauvin.erik.mobibot.entries.EntriesUtils.toLinkLabel import net.thauvin.erik.mobibot.entries.EntryLink import net.thauvin.erik.mobibot.social.SocialManager @@ -65,10 +65,10 @@ class LinksManager : AbstractCommand() { } companion object { - const val LINK_MATCH = "^[hH][tT][tT][pP](|[sS])://.*" + val LINK_MATCH = "^[hH][tT][tT][pP](|[sS])://.*".toRegex() const val KEYWORDS_PROP = "tags-keywords" const val TAGS_PROP = "tags" - const val TAG_MATCH = ", *| +" + val TAG_MATCH = ", *| +".toRegex() /** * Entries array @@ -116,7 +116,7 @@ class LinksManager : AbstractCommand() { val data = cmds[1].trim().split("${Tags.COMMAND}:", limit = 2) title = data[0].trim() if (data.size > 1) { - tags.addAll(data[1].split(TAG_MATCH.toRegex())) + tags.addAll(data[1].split(TAG_MATCH)) } } @@ -136,7 +136,7 @@ class LinksManager : AbstractCommand() { val entry = EntryLink(link, title, sender, login, channel, tags) entries.links.add(entry) val index = entries.links.lastIndexOf(entry) - event.sendMessage(buildLink(index, entry)) + event.sendMessage(printLink(index, entry)) pinboard.addPin(event.bot().serverHostname, entry) @@ -156,7 +156,7 @@ class LinksManager : AbstractCommand() { override fun helpResponse(channel: String, topic: String, event: GenericMessageEvent): Boolean = false override fun matches(message: String): Boolean { - return message.matches(LINK_MATCH.toRegex()) + return message.matches(LINK_MATCH) } internal fun fetchTitle(link: String): String { @@ -179,7 +179,7 @@ class LinksManager : AbstractCommand() { return try { val match = entries.links.single { it.link == link } event.sendMessage( - "Duplicate".bold() + " >> " + buildLink(entries.links.indexOf(match), match) + "Duplicate".bold() + " >> " + printLink(entries.links.indexOf(match), match) ) true } catch (ignore: NoSuchElementException) { @@ -200,9 +200,9 @@ class LinksManager : AbstractCommand() { override fun setProperty(key: String, value: String) { super.setProperty(key, value) if (KEYWORDS_PROP == key) { - keywords.addAll(value.split(TAG_MATCH.toRegex())) + keywords.addAll(value.split(TAG_MATCH)) } else if (TAGS_PROP == key) { - defaultTags.addAll(value.split(TAG_MATCH.toRegex())) + defaultTags.addAll(value.split(TAG_MATCH)) } } } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Posting.kt b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Posting.kt index a0224b9..9368d37 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Posting.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Posting.kt @@ -94,7 +94,7 @@ class Posting : AbstractCommand() { val entry: EntryLink = entries.links[entryIndex] val commentIndex = entry.addComment(cmd, event.user.nick) val comment = entry.getComment(commentIndex) - event.sendMessage(EntriesUtils.buildComment(entryIndex, commentIndex, comment)) + event.sendMessage(EntriesUtils.printComment(entryIndex, commentIndex, comment)) entries.save() } @@ -103,7 +103,7 @@ class Posting : AbstractCommand() { val entry: EntryLink = entries.links[entryIndex] entry.title = cmd.substring(1).trim() LinksManager.pinboard.updatePin(event.bot().serverHostname, entry.link, entry) - event.sendMessage(EntriesUtils.buildLink(entryIndex, entry)) + event.sendMessage(EntriesUtils.printLink(entryIndex, entry)) entries.save() } } @@ -112,11 +112,11 @@ class Posting : AbstractCommand() { val entry: EntryLink = entries.links[entryIndex] if (entry.login == event.user.login || event.isChannelOp(channel)) { val link = cmd.substring(1) - if (link.matches(LinksManager.LINK_MATCH.toRegex())) { + if (link.matches(LinksManager.LINK_MATCH)) { val oldLink = entry.link entry.link = link LinksManager.pinboard.updatePin(event.bot().serverHostname, oldLink, entry) - event.sendMessage(EntriesUtils.buildLink(entryIndex, entry)) + event.sendMessage(EntriesUtils.printLink(entryIndex, entry)) entries.save() } } @@ -128,7 +128,7 @@ class Posting : AbstractCommand() { val entry: EntryLink = entries.links[index] entry.nick = cmd.substring(1) LinksManager.pinboard.updatePin(event.bot().serverHostname, entry.link, entry) - event.sendMessage(EntriesUtils.buildLink(index, entry)) + event.sendMessage(EntriesUtils.printLink(index, entry)) entries.save() } } else { @@ -151,14 +151,14 @@ class Posting : AbstractCommand() { private fun showEntry(index: Int, event: GenericMessageEvent) { val entry: EntryLink = entries.links[index] - event.sendMessage(EntriesUtils.buildLink(index, entry)) + event.sendMessage(EntriesUtils.printLink(index, entry)) if (entry.tags.isNotEmpty()) { - event.sendMessage(EntriesUtils.buildTags(index, entry)) + event.sendMessage(EntriesUtils.printTags(index, entry)) } if (entry.comments.isNotEmpty()) { val comments = entry.comments for (i in comments.indices) { - event.sendMessage(EntriesUtils.buildComment(index, i, comments[i])) + event.sendMessage(EntriesUtils.printComment(index, i, comments[i])) } } } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Tags.kt b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Tags.kt index 8146e88..785e3a0 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Tags.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/Tags.kt @@ -67,14 +67,14 @@ class Tags : AbstractCommand() { if (entry.login == event.user.login || event.isChannelOp(channel)) { entry.setTags(cmd) LinksManager.pinboard.updatePin(event.bot().serverHostname, entry.link, entry) - event.sendMessage(EntriesUtils.buildTags(index, entry)) + event.sendMessage(EntriesUtils.printTags(index, entry)) LinksManager.entries.save() } else { event.sendMessage("Please ask a channel op to change the tags for you.") } } else { if (entry.tags.isNotEmpty()) { - event.sendMessage(EntriesUtils.buildTags(index, entry)) + event.sendMessage(EntriesUtils.printTags(index, entry)) } else { event.sendMessage("The entry has no tags. Why don't add some?") } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/View.kt b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/View.kt index ee817a0..008ccad 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/View.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/commands/links/View.kt @@ -97,11 +97,11 @@ class View : AbstractCommand() { entry = entries.links[index] if (query.isNotBlank()) { if (entry.matches(query)) { - event.sendMessage(EntriesUtils.buildLink(index, entry, true)) + event.sendMessage(EntriesUtils.printLink(index, entry, true)) sent++ } } else { - event.sendMessage(EntriesUtils.buildLink(index, entry, true)) + event.sendMessage(EntriesUtils.printLink(index, entry, true)) sent++ } index++ diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtils.kt b/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtils.kt index 2b96dac..ac2c259 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtils.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtils.kt @@ -40,18 +40,18 @@ import net.thauvin.erik.mobibot.Utils.green */ object EntriesUtils { /** - * Builds an entry's comment for display on the channel. + * Prints an entry's comment for display on the channel. */ @JvmStatic - fun buildComment(entryIndex: Int, commentIndex: Int, comment: EntryComment): String = + fun printComment(entryIndex: Int, commentIndex: Int, comment: EntryComment): String = ("${entryIndex.toLinkLabel()}.${commentIndex + 1}: [${comment.nick}] ${comment.comment}") /** - * Builds an entry's link for display on the channel. + * Prints an entry's link for display on the channel. */ @JvmStatic @JvmOverloads - fun buildLink(entryIndex: Int, entry: EntryLink, isView: Boolean = false): String { + fun printLink(entryIndex: Int, entry: EntryLink, isView: Boolean = false): String { val buff = StringBuilder().append(entryIndex.toLinkLabel()).append(": ") .append('[').append(entry.nick).append(']') if (isView && entry.comments.isNotEmpty()) { @@ -70,14 +70,14 @@ object EntriesUtils { } /** - * Build an entry's tags/categories for display on the channel. + * Prints an entry's tags/categories for display on the channel. e.g. L1T: tag1, tag2 */ @JvmStatic - fun buildTags(entryIndex: Int, entry: EntryLink): String = - entryIndex.toLinkLabel() + "${Constants.TAG_CMD}: " + entry.pinboardTags.replace(",", ", ") + fun printTags(entryIndex: Int, entry: EntryLink): String = + entryIndex.toLinkLabel() + "${Constants.TAG_CMD}: " + entry.formatTags(", ") /** - * Build link label based on its index. e.g: L1 + * Builds link label based on its index. e.g: L1 */ @JvmStatic fun Int.toLinkLabel(): String = Constants.LINK_CMD + (this + 1) diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntryLink.kt b/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntryLink.kt index b70fa9d..59f4e73 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntryLink.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/entries/EntryLink.kt @@ -127,24 +127,18 @@ class EntryLink( return comments.remove(entryComment) } + /** + * Formats the tags. + */ + fun formatTags(sep: String, prefix: String = "") : String { + return tags.joinToString(separator = sep, prefix = prefix){it.name} + } + /** * Returns a comment. */ fun getComment(index: Int): EntryComment = comments[index] - /** - * Returns the tags formatted for pinboard.in - */ - val pinboardTags: String - get() { - val pinboardTags = StringBuilder(nick) - for (tag in tags) { - pinboardTags.append(',') - pinboardTags.append(tag.name) - } - return pinboardTags.toString() - } - /** * Returns true if a string is contained in the link, title, or nick. */ diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/entries/FeedsManager.kt b/src/main/kotlin/net/thauvin/erik/mobibot/entries/FeedsManager.kt index 32ba16d..1ae2690 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/entries/FeedsManager.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/entries/FeedsManager.kt @@ -160,7 +160,7 @@ class FeedsManager private constructor() { item.description = SyndContentImpl().apply { value = buff.toString() } item.title = title item.publishedDate = date - item.author = "${channel.substring(1)}@${entries.ircServer} ($nick)" + item.author = "${channel.removePrefix("#")}@${entries.ircServer} ($nick)" item.categories = tags items.add(item) } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/modules/AbstractModule.kt b/src/main/kotlin/net/thauvin/erik/mobibot/modules/AbstractModule.kt index 83eafcf..61e2eaf 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/modules/AbstractModule.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/modules/AbstractModule.kt @@ -113,7 +113,7 @@ abstract class AbstractModule { */ open val isValidProperties: Boolean get() { - for (s in propertyKeys) { + for (s in properties.keys) { if (properties[s].isNullOrBlank()) { return false } diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/modules/Mastodon.kt b/src/main/kotlin/net/thauvin/erik/mobibot/modules/Mastodon.kt index 41de68e..b355fdc 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/modules/Mastodon.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/modules/Mastodon.kt @@ -52,22 +52,21 @@ class Mastodon : SocialModule() { get() = properties[HANDLE_PROP] override val isAutoPost: Boolean + get() = isEnabled && properties[AUTO_POST_PROP].toBoolean() override val isValidProperties: Boolean - get() { - for (s in propertyKeys) { - if (AUTO_POST_PROP != s && HANDLE_PROP != s && properties[s].isNullOrBlank()) { - return false - } - } - return true - } + get() = !(properties[INSTANCE_PROP].isNullOrBlank() || properties[ACCESS_TOKEN_PROP].isNullOrBlank()) /** * Formats the entry for posting. */ override fun formatEntry(entry: EntryLink): String { - return "${entry.title} via ${entry.nick} on ${entry.channel}\n\n${entry.link}" + return "${entry.title} (via ${entry.nick} on ${entry.channel})${formatTags(entry)}\n\n${entry.link}" + } + + private fun formatTags(entry: EntryLink): String { + return entry.tags.filter { !it.name.equals(entry.channel.removePrefix("#"), true) } + .joinToString(separator = " ", prefix = "\n\n") { "#${it.name}" } } /** diff --git a/src/main/kotlin/net/thauvin/erik/mobibot/modules/Twitter.kt b/src/main/kotlin/net/thauvin/erik/mobibot/modules/Twitter.kt index 91cca2a..2253494 100644 --- a/src/main/kotlin/net/thauvin/erik/mobibot/modules/Twitter.kt +++ b/src/main/kotlin/net/thauvin/erik/mobibot/modules/Twitter.kt @@ -49,14 +49,8 @@ class Twitter : SocialModule() { get() = isEnabled && properties[AUTO_POST_PROP].toBoolean() override val isValidProperties: Boolean - get() { - for (s in propertyKeys) { - if (AUTO_POST_PROP != s && HANDLE_PROP != s && properties[s].isNullOrBlank()) { - return false - } - } - return true - } + get() = !(properties[CONSUMER_KEY_PROP].isNullOrBlank() || properties[CONSUMER_SECRET_PROP].isNullOrBlank() + || properties[TOKEN_PROP].isNullOrBlank() || properties[TOKEN_SECRET_PROP].isNullOrBlank()) /** * Formats the entry for posting. diff --git a/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtilsTest.kt b/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtilsTest.kt index 0de9d5e..23ba01e 100644 --- a/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtilsTest.kt +++ b/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntriesUtilsTest.kt @@ -36,9 +36,9 @@ import assertk.assertThat import assertk.assertions.contains import assertk.assertions.isEqualTo import net.thauvin.erik.mobibot.Constants -import net.thauvin.erik.mobibot.entries.EntriesUtils.buildComment -import net.thauvin.erik.mobibot.entries.EntriesUtils.buildLink -import net.thauvin.erik.mobibot.entries.EntriesUtils.buildTags +import net.thauvin.erik.mobibot.entries.EntriesUtils.printComment +import net.thauvin.erik.mobibot.entries.EntriesUtils.printLink +import net.thauvin.erik.mobibot.entries.EntriesUtils.printTags import net.thauvin.erik.mobibot.entries.EntriesUtils.toLinkLabel import org.testng.annotations.Test @@ -60,33 +60,33 @@ class EntriesUtilsTest { } @Test(groups = ["entries"]) - fun buildLinkLabelTest() { - assertThat(1.toLinkLabel()).isEqualTo("${Constants.LINK_CMD}2") + fun printCommentTest() { + assertThat(printComment(0, 0, comment)).isEqualTo("${Constants.LINK_CMD}1.1: [nick] comment") } @Test(groups = ["entries"]) - fun buildCommentTest() { - assertThat(buildComment(0, 0, comment)).isEqualTo("${Constants.LINK_CMD}1.1: [nick] comment") - } - - @Test(groups = ["entries"]) - fun buildLinkTest() { + fun printLinkTest() { for (i in links.indices) { assertThat( - buildLink(i - 1, links[i]), "link $i" + printLink(i - 1, links[i]), "link $i" ).isEqualTo("L$i: [Skynx$i] \u0002Mobitopia$i\u0002 ( \u000303https://www.mobitopia.org/$i\u000F )") } assertThat(links.first().addComment(comment), "addComment()").isEqualTo(0) - assertThat(buildLink(0, links.first(), isView = true), "buildLink(isView=true)").contains("[+1]") + assertThat(printLink(0, links.first(), isView = true), "printLink(isView=true)").contains("[+1]") } @Test(groups = ["entries"]) - fun buildTagsTest() { + fun printTagsTest() { for (i in links.indices) { assertThat( - buildTags(i - 1, links[i]), "tag $i" - ).isEqualTo("L${i}T: Skynx$i, tag1, tag2, tag3, tag4, tag5") + printTags(i - 1, links[i]), "tag $i" + ).isEqualTo("L${i}T: tag1, tag2, tag3, tag4, tag5") } } + + @Test(groups = ["entries"]) + fun toLinkLabelTest() { + assertThat(1.toLinkLabel()).isEqualTo("${Constants.LINK_CMD}2") + } } diff --git a/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntryLinkTest.kt b/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntryLinkTest.kt index 5c9ef99..b36d167 100644 --- a/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntryLinkTest.kt +++ b/src/test/kotlin/net/thauvin/erik/mobibot/entries/EntryLinkTest.kt @@ -40,6 +40,7 @@ import assertk.assertions.isFalse import assertk.assertions.isTrue import assertk.assertions.prop import assertk.assertions.size +import assertk.assertions.startsWith import com.rometools.rome.feed.synd.SyndCategory import com.rometools.rome.feed.synd.SyndCategoryImpl import org.testng.annotations.Test @@ -94,13 +95,11 @@ class EntryLinkTest { @Test(groups = ["entries"]) fun testConstructor() { - val tag = "test" - val tags = listOf(SyndCategoryImpl().apply { name = tag }) + val tags = listOf(SyndCategoryImpl().apply { name = "tag1" }, SyndCategoryImpl().apply { name = "tag2" }) val link = EntryLink("link", "title", "nick", "channel", Date(), tags) assertThat(link, "link").all { prop(EntryLink::tags).size().isEqualTo(tags.size) - prop(EntryLink::tags).index(0).prop(SyndCategory::getName).isEqualTo(tag) - prop(EntryLink::pinboardTags).isEqualTo("nick,$tag") + prop(EntryLink::tags).index(0).prop(SyndCategory::getName).isEqualTo("tag1") } } @@ -122,11 +121,17 @@ class EntryLinkTest { assertThat(tag.name, "tag.name($i)").isEqualTo("tag${i + 1}") } assertThat(entryLink::tags).size().isEqualTo(5) - entryLink.setTags("-tag5") + entryLink.setTags("-tag5, tag4") entryLink.setTags("+mobitopia") - entryLink.setTags("tag4") entryLink.setTags("-mobitopia") - assertThat(entryLink::pinboardTags).isEqualTo(entryLink.nick + ",tag1,tag2,tag3,tag4,mobitopia") + assertThat( + entryLink.formatTags(","), + "formatTags(',')" + ).isEqualTo("tag1,tag2,tag3,tag4,mobitopia") + entryLink.setTags("-tag4 tag5") + assertThat( + entryLink.formatTags(" ", ","), "formatTag(' ',',')" + ).isEqualTo(",tag1 tag2 tag3 mobitopia tag5") val size = entryLink.tags.size entryLink.setTags("") assertThat(entryLink.tags, "setTags('')").size().isEqualTo(size) diff --git a/version.properties b/version.properties index d91b88d..edb9391 100644 --- a/version.properties +++ b/version.properties @@ -1,9 +1,9 @@ #Generated by the Semver Plugin for Gradle -#Mon Dec 05 21:57:24 PST 2022 -version.buildmeta=814 +#Wed Dec 07 02:53:01 PST 2022 +version.buildmeta=857 version.major=0 version.minor=8 version.patch=0 version.prerelease=rc version.project=mobibot -version.semver=0.8.0-rc+814 +version.semver=0.8.0-rc+857