X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FLinkedElementRenderFilterTest.kt;h=c3e26c053facb406ceb6c51dfae3ffe417e13c68;hb=de7568a82eb4150bf6d2b0553841b7b69f84c968;hp=07ef1781d4f49b7a53b95f89befc4a51c05927ec;hpb=b91ce252d94a8876097b939e129dc33264cef2f5;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilterTest.kt b/src/test/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilterTest.kt index 07ef178..c3e26c0 100644 --- a/src/test/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilterTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilterTest.kt @@ -1,10 +1,16 @@ package net.pterodactylus.sone.template +import com.google.inject.Guice import net.pterodactylus.sone.core.LinkedElement +import net.pterodactylus.sone.test.getInstance +import net.pterodactylus.sone.test.isProvidedByMock +import net.pterodactylus.util.template.ClassPathTemplateProvider import net.pterodactylus.util.template.HtmlFilter import net.pterodactylus.util.template.TemplateContextFactory import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.`is` +import org.hamcrest.Matchers.notNullValue +import org.hamcrest.Matchers.nullValue import org.jsoup.Jsoup import org.junit.Test @@ -17,21 +23,45 @@ class LinkedElementRenderFilterTest { init { templateContextFactory.addFilter("html", HtmlFilter()) + templateContextFactory.addProvider(ClassPathTemplateProvider(LinkedElementRenderFilter::class.java, "/templates/")) } private val filter = LinkedElementRenderFilter(templateContextFactory) @Test + fun `filter returns null for objects that are not linked elements`() { + assertThat(filter.format(null, Any(), null), nullValue()) + } + + @Test + fun `filter renders empty span for not loaded elements`() { + val html = filter.format(null, LinkedElement("KSK@gpl.png", loading = true), emptyMap()) as String + val spanNode = Jsoup.parseBodyFragment(html).body().child(0) + assertThat(spanNode.nodeName(), `is`("span")) + assertThat(spanNode.attr("class"), `is`("linked-element not-loaded")) + assertThat(spanNode.attr("title"), `is`("KSK@gpl.png")) + assertThat(spanNode.hasAttr("style"), `is`(false)) + assertThat(spanNode.children().isEmpty(), `is`(true)) + } + + @Test fun `filter can render linked images`() { val html = filter.format(null, LinkedElement("KSK@gpl.png"), emptyMap()) as String - val linkNode = Jsoup.parseBodyFragment(html).body().child(0) + val outerSpanNode = Jsoup.parseBodyFragment(html).body().child(0) + assertThat(outerSpanNode.nodeName(), `is`("span")) + assertThat(outerSpanNode.attr("class"), `is`("linked-element loaded")) + assertThat(outerSpanNode.attr("title"), `is`("KSK@gpl.png")) + val linkNode = outerSpanNode.child(0) assertThat(linkNode.nodeName(), `is`("a")) assertThat(linkNode.attr("href"), `is`("/KSK@gpl.png")) - val spanNode = linkNode.child(0) - assertThat(spanNode.nodeName(), `is`("span")) - assertThat(spanNode.attr("class"), `is`("linked-element")) - assertThat(spanNode.attr("title"), `is`("KSK@gpl.png")) - assertThat(spanNode.attr("style"), `is`("background-image: url('/KSK@gpl.png')")) + val innerSpanNode = linkNode.child(0) + assertThat(innerSpanNode.attr("style"), `is`("background-image: url('/KSK@gpl.png')")) + } + + @Test + fun `render filter can be created by guice`() { + val injector = Guice.createInjector(TemplateContextFactory::class.isProvidedByMock()) + assertThat(injector.getInstance(), notNullValue()) } }