1 package net.pterodactylus.sone.core
3 import net.pterodactylus.sone.core.FreenetInterface.InsertToken
4 import net.pterodactylus.sone.core.FreenetInterface.InsertTokenSupplier
5 import net.pterodactylus.sone.data.Image
6 import net.pterodactylus.sone.data.TemporaryImage
7 import net.pterodactylus.sone.test.mock
8 import net.pterodactylus.sone.test.whenever
10 import org.mockito.ArgumentMatchers.any
11 import org.mockito.ArgumentMatchers.eq
12 import org.mockito.Mockito.doThrow
13 import org.mockito.Mockito.never
14 import org.mockito.Mockito.verify
17 * Unit test for [ImageInserter].
19 class ImageInserterTest {
21 private val temporaryImage = mock<TemporaryImage>().apply { whenever(id).thenReturn("image-id") }
22 private val image = mock<Image>().apply { whenever(id).thenReturn("image-id") }
23 private val freenetInterface = mock<FreenetInterface>()
24 private val insertToken = mock<InsertToken>()
25 private val insertTokenSupplier: InsertTokenSupplier = mock<InsertTokenSupplier>().apply { whenever(apply(any())).thenReturn(insertToken) }
26 private val imageInserter = ImageInserter(freenetInterface, insertTokenSupplier)
29 fun `inserter inserts image`() {
30 imageInserter.insertImage(temporaryImage, image)
31 verify(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java))
35 fun `exception when inserting image is ignored`() {
36 doThrow(SoneException::class.java).`when`(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java))
37 imageInserter.insertImage(temporaryImage, image)
38 verify(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java))
42 fun `cancelling image insert that is not running does nothing`() {
43 imageInserter.cancelImageInsert(image)
44 verify(insertToken, never()).cancel()
48 fun `cancelling image cancels the insert token`() {
49 imageInserter.insertImage(temporaryImage, image)
50 imageInserter.cancelImageInsert(image)
51 verify(insertToken).cancel()