1f6f6819a1ecebd4fb41408911782ee18fc84ad6
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / template / LinkedElementsFilterTest.kt
1 package net.pterodactylus.sone.template
2
3 import net.pterodactylus.sone.core.ElementLoader
4 import net.pterodactylus.sone.core.LinkedElement
5 import net.pterodactylus.sone.test.mock
6 import net.pterodactylus.sone.text.FreenetLinkPart
7 import net.pterodactylus.sone.text.LinkPart
8 import net.pterodactylus.sone.text.PlainTextPart
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.contains
11 import org.junit.Test
12 import org.mockito.Mockito.`when`
13
14 /**
15  * Unit test for [LinkedElementsFilter].
16  */
17 class LinkedElementsFilterTest {
18
19         private val imageLoader = mock<ElementLoader>()
20         private val filter = LinkedElementsFilter(imageLoader)
21
22         @Test
23         fun `filter finds all loaded freenet images`() {
24                 val parts = listOf(
25                                 PlainTextPart("text"),
26                                 LinkPart("http://link", "link"),
27                                 FreenetLinkPart("KSK@link", "link", false),
28                                 FreenetLinkPart("KSK@loading.png", "link", false),
29                                 FreenetLinkPart("KSK@link.png", "link", false)
30                 )
31                 `when`(imageLoader.loadElement("KSK@link")).thenReturn(LinkedElement("KSK@link", failed = true))
32                 `when`(imageLoader.loadElement("KSK@loading.png")).thenReturn(LinkedElement("KSK@loading.png", loading = true))
33                 `when`(imageLoader.loadElement("KSK@link.png")).thenReturn(LinkedElement("KSK@link.png"))
34                 val loadedImages = filter.format(null, parts, null)
35                 assertThat(loadedImages, contains<LinkedElement>(
36                                 LinkedElement("KSK@loading.png", failed = false, loading = true),
37                                 LinkedElement("KSK@link.png", failed = false, loading = false)
38                 ))
39         }
40
41 }