import com.google.common.io.ByteStreams
import freenet.keys.FreenetURI
import net.pterodactylus.sone.core.FreenetInterface.BackgroundFetchCallback
- import net.pterodactylus.sone.test.capture
- import net.pterodactylus.sone.test.mock
+ import net.pterodactylus.sone.test.*
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo
-import org.junit.Test
import org.mockito.ArgumentMatchers.any
import org.mockito.ArgumentMatchers.eq
- import org.mockito.Mockito.`when`
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import java.io.ByteArrayOutputStream
import java.util.concurrent.TimeUnit
+import kotlin.test.Test
/**
* Unit test for [DefaultElementLoaderTest].
}
@Test
+ fun `image loader returns element for audio data`() {
+ elementLoader.loadElement(audioKey)
+ verify(freenetInterface).startFetch(eq(FreenetURI(audioKey)), callback.capture())
+ callback.value.shouldCancel(FreenetURI(audioKey), "audio/mpeg", 123)
+ val linkedElement = elementLoader.loadElement(audioKey)
+ assertThat(linkedElement, equalTo(LinkedElement(audioKey, properties = mapOf(
+ "type" to "audio", "size" to 123L, "sizeHuman" to "123 B"
+ ))))
+ }
+
+ @Test
fun `element loader can extract description from description header`() {
elementLoader.loadElement(textKey)
verify(freenetInterface).startFetch(eq(FreenetURI(textKey)), callback.capture())
elementLoader.loadElement(IMAGE_ID)
verify(freenetInterface).startFetch(eq(freenetURI), callback.capture())
callback.value.failed(freenetURI)
- `when`(ticker.read()).thenReturn(TimeUnit.MINUTES.toNanos(31))
+ whenever(ticker.read()).thenReturn(TimeUnit.MINUTES.toNanos(31))
val linkedElement = elementLoader.loadElement(IMAGE_ID)
assertThat(linkedElement.failed, equalTo(false))
assertThat(linkedElement.loading, equalTo(true))
private const val IMAGE_ID = "KSK@gpl.png"
private val freenetURI = FreenetURI(IMAGE_ID)
private const val decomposedKey = "CHK@DCiVgTWW9nnWHJc9EVwtFJ6jAfBSVyy~rgiPvhUKbS4,mNY85V0x7dYcv7SnEYo1PCC6y2wNWMDNt-y9UWQx9fI,AAMC--8/fru%CC%88hstu%CC%88ck.jpg"
+private const val audioKey = "CHK@DCiVgTWW9nnWHJc9EVwtFJ6jAfBSVyy~rgiPvhUKbS4,mNY85V0x7dYcv7SnEYo1PCC6y2wNWMDNt-y9UWQx9fI,AAMC--8/audio.mp3"
private const val normalizedKey = "CHK@DCiVgTWW9nnWHJc9EVwtFJ6jAfBSVyy~rgiPvhUKbS4,mNY85V0x7dYcv7SnEYo1PCC6y2wNWMDNt-y9UWQx9fI,AAMC--8/frühstück.jpg"
private const val textKey = "KSK@gpl.html"
private const val sizeOkay = 2097152L