1 package net.pterodactylus.sone.template
3 import net.pterodactylus.sone.core.LinkedElement
4 import net.pterodactylus.util.template.HtmlFilter
5 import net.pterodactylus.util.template.TemplateContextFactory
6 import org.hamcrest.MatcherAssert.assertThat
7 import org.hamcrest.Matchers.`is`
8 import org.hamcrest.Matchers.nullValue
13 * Unit test for [LinkedElementRenderFilter].
15 class LinkedElementRenderFilterTest {
17 private val templateContextFactory = TemplateContextFactory()
20 templateContextFactory.addFilter("html", HtmlFilter())
23 private val filter = LinkedElementRenderFilter(templateContextFactory)
26 fun `filter returns null for objects that are not linked elements`() {
27 assertThat(filter.format(null, Any(), null), nullValue())
31 fun `filter renders loading animation for not loaded elements`() {
32 val html = filter.format(null, LinkedElement("KSK@gpl.png", loading = true), emptyMap<String, Any?>()) as String
33 val spanNode = Jsoup.parseBodyFragment(html).body().child(0)
34 assertThat(spanNode.nodeName(), `is`("span"))
35 assertThat(spanNode.attr("class"), `is`("linked-element"))
36 assertThat(spanNode.attr("title"), `is`("KSK@gpl.png"))
37 assertThat(spanNode.attr("style"), `is`("background-image: url('images/loading-animation.gif')"))
41 fun `filter can render linked images`() {
42 val html = filter.format(null, LinkedElement("KSK@gpl.png"), emptyMap<String, Any?>()) as String
43 val linkNode = Jsoup.parseBodyFragment(html).body().child(0)
44 assertThat(linkNode.nodeName(), `is`("a"))
45 assertThat(linkNode.attr("href"), `is`("/KSK@gpl.png"))
46 val spanNode = linkNode.child(0)
47 assertThat(spanNode.nodeName(), `is`("span"))
48 assertThat(spanNode.attr("class"), `is`("linked-element"))
49 assertThat(spanNode.attr("title"), `is`("KSK@gpl.png"))
50 assertThat(spanNode.attr("style"), `is`("background-image: url('/KSK@gpl.png')"))